jaka jest różnica między umask a chmod

10

Jestem całkowicie zdezorientowany między umask a chmod. Oba są używane do nadawania uprawnień do plików. Ale gdzie dokładnie jest różnica i kiedy ich używać.

Przeczytałem dokumentację online, ale oba wyglądają dla mnie tak samo.

umask: umask służy do ustawiania domyślnych uprawnień do plików. Uprawnienia te zostaną wykorzystane do wszystkich kolejnych plików podczas ich tworzenia. chmod: służy do zmiany uprawnień do plików i katalogów.

Według mojego zrozumienia, jeśli na przykład utworzono plik test.doc.

Domyślnie unix podaje plikowi 022 kod umask.

Teraz, gdy zmienię go na chmod 666 test.doc, mogę zmienić poziom uprawnień tego pliku.

Co jeśli użyję umask 666 dla tego samego pliku.

Jaką różnicę się dzieje, gdy używam chmod 666 i umask 666

użytkownik548781
źródło
2
umaskustawia zmienną środowiskową, która automatycznie ustawia uprawnienia do plików dla nowo tworzonych plików . chmodzmienia uprawnienia do istniejących plików .
DavidPostill
1
@DavidPostill. Nie, umasknie ustawia „zmiennej środowiskowej”. Ustawia maskę tworzenia trybu plików bieżącego środowiska wykonywania powłoki.
fpmurphy
@ fpmurphy1 Dzięki za wyjaśnienie :)
DavidPostill

Odpowiedzi:

10

Różnica polega na tym, że umaskpociąga za sobą tylko nowe pliki . Jak już wspomniałeś, umask ustawia domyślne uprawnienia, które będzie mieć plik / katalog w czasie tworzenia, ale później umaskjuż na nie nie ma wpływu.

chmodwymaga jednak utworzenia pliku przed uruchomieniem.

Dlatego po uruchomieniu umasknie będzie to miało żadnego wpływu na istniejące pliki.

nKn
źródło
2
Nie możesz użyć umaskpliku, nie ma on fileargumentu.
DavidPostill
Racja, przepisałem tę część.
nKn
3

umaskbardzo różni się od chmodrzeczywistości.

  1. Ważna różnica nie została jeszcze wspomniana: chmodustawia, ale umask usuwa (ogranicza) bity uprawnień. Dlatego nazywa się to „maską” (jak w „masce bitowej”).

  2. Jak napisał David , umaskjest to ustawienie konfiguracyjne (na poziomie procesu), więc nie jest stosowane do żadnych konkretnych plików (w przeciwieństwie do chmod).

  3. Co prowadzi nas do kolejnego ważnego punktu: umasknie ogranicza się do plików. Ma to również zastosowanie przy tworzeniu katalogów. (Zobacz także np. Tę odpowiedź .)

  4. Ważne jest również to, że chmodaktualnie skonfigurowane polecenie nie ma wpływu na samo polecenie umask.

A teraz twój przykład tego, co by umask 666zrobił:

Powie bieżącego procesu (na przykład kod shell), że wszelkie nowe obiekty systemu plików powinny być tworzone z R+ Wbitów (4 + 2 = 6) usunięte (niezależnie od uprawnienia jawnie lub niejawnie prosić przy tworzeniu). (Tak więc 666 nie jest bardzo praktyczną wartością, ponieważ pozwala tylko Xustawić (wykonać) bity, ale dla plików nieczytelnych ...)

Na przykład:

$ touch foo; ls -la foo
-rw-r--r-- ... foo   <-- default permissions

$ umask 666
$ touch bar; ls -la bar
---------- ... bar   <-- perms. after the new umask (restriction) is set
$ mkdir foodir; ls -la | grep foodir
d--x--x--x ... dir   <-- not very practical for dirs, either

$ chmod 777 bar; ls -la bar
-rwxrwxrwx .... bar* <-- chmod happily ignores the current umask

$ umask 022
$ touch bong; ls -la bong
-rw-r--r-- ... bong  <-- (so, it seems this was the default umask)

$ chmod 666 bong; ls -la bong
-rw-rw-rw- ... bong  <-- no surprise of any kind here
Sz.
źródło
0

UMASK = chmod 777 - uprawnienia umask

umask 022 => 777 - 022 => chmod 755
umask 077 => 777 - 077 => chmod 700
umask 002 => 777 - 002 => chmod 775
umask 007 => 777 - 007 => chmod 770
umask 027 => 777 - 027 => chmod 750
umask 177 => 777 - 177 => chmod 600

Coś w tym stylu.

PanPikuś
źródło