Nie ma prawdziwej niespójności, ponieważ relacja między umask
i chmod
może być czysto zapisana za pomocą równań. Najwyraźniej umask
ustawia przeciwieństwo chmod
, tak zostało stworzone w dawnych czasach.
Przykład: 022
(domyślnie zwykły umask
) tworzy 755
. To działa tak:
7 - 0 = 7
staje pierwszy bajt
7 - 2 = 5
staje się drugim i trzecim bajty
Korzystanie z tego przykładu, umask 777
tworzy plik z chmod 000
, umask 112
będzie równa chmod 664
. O ile mi wiadomo, stało się tak dlatego, że polecenie umask
zostało pierwotnie utworzone w celu wskazania, jakie bity uprawnień pliku będą miały po utworzeniu (stąd inwersja).
Chociaż może to być denerwujące, naprawdę nie jest trudno przyzwyczaić się do tego. Po prostu pomyśl, w jaki sposób chcesz chmod
swoich plików i odjąć bajt, który chcesz od 7
, a otrzymasz wartość umask
. Lub, gdy jesteś w IDE, pisząc swój kod, nie używaj umask
, ale raczej stwórz plik (z domyślnie umask
), a następnie użyj, w Pythonie, os.chmod()
zamiast tego.
To "maska" - to właśnie oznacza słowo w tym kontekście; coś, co pozwala tylko na niewykonanie bitów (pomyśl o maskach używanych do malowania, tworzenia układów scalonych i tym podobnych). Gdyby nie działało w ten sposób, byłoby to nazwane czymś innym. –