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
umask
ustawia zmienną środowiskową, która automatycznie ustawia uprawnienia do plików dla nowo tworzonych plików .chmod
zmienia uprawnienia do istniejących plików .umask
nie ustawia „zmiennej środowiskowej”. Ustawia maskę tworzenia trybu plików bieżącego środowiska wykonywania powłoki.Odpowiedzi:
Różnica polega na tym, że
umask
pocią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óźniejumask
już na nie nie ma wpływu.chmod
wymaga jednak utworzenia pliku przed uruchomieniem.Dlatego po uruchomieniu
umask
nie będzie to miało żadnego wpływu na istniejące pliki.źródło
umask
pliku, nie ma onfile
argumentu.umask
bardzo różni się odchmod
rzeczywistości.Ważna różnica nie została jeszcze wspomniana:
chmod
ustawia, aleumask
usuwa (ogranicza) bity uprawnień. Dlatego nazywa się to „maską” (jak w „masce bitowej”).Jak napisał David ,
umask
jest to ustawienie konfiguracyjne (na poziomie procesu), więc nie jest stosowane do żadnych konkretnych plików (w przeciwieństwie dochmod
).Co prowadzi nas do kolejnego ważnego punktu:
umask
nie ogranicza się do plików. Ma to również zastosowanie przy tworzeniu katalogów. (Zobacz także np. Tę odpowiedź .)Ważne jest również to, że
chmod
aktualnie skonfigurowane polecenie nie ma wpływu na samo polecenieumask
.A teraz twój przykład tego, co by
umask 666
zrobił:Powie bieżącego procesu (na przykład kod shell), że wszelkie nowe obiekty systemu plików powinny być tworzone z
R
+W
bitó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 tylkoX
ustawić (wykonać) bity, ale dla plików nieczytelnych ...)Na przykład:
źródło
UMASK = chmod 777 - uprawnienia umask
Coś w tym stylu.
źródło