umask(2) System Calls Manual umask(2)

umask - ustawia maskę uprawnień tworzonych plików

Standardowa biblioteka C (libc, -lc)

#include <sys/stat.h>
mode_t umask(mode_t mask);

umask() ustawia maskę uprawnień procesu wywołującego, używaną podczas tworzenia plików (umask) na mask & 0777 (tj. używane są tylko bity uprawnień dostępu do pliku z mask) i zwraca poprzednią wartość maski.

Maska umask jest używana przez open(2), mkdir(2) i inne wywołania systemowe tworzące pliki, do modyfikacji uprawnień nowo tworzonych plików lub katalogów. W szczególności, uprawnienia z umask są wyłączane z argumentu mode do open(2) i mkdir(2).

Alternatywnie, jeśli katalog nadrzędny ma domyślne listy kontroli dostępu (ACL); zob. acl(5)), umask jest ignorowana, dziedziczone są domyślne ACL, bity uprawnień są ustawiane w oparciu o dziedziczone ACL, a bity uprawnień nieobecne w argumencie mode są wyłączane. Przykładowo, następujące domyślne ACL są równoważne umask 022:


u::rwx,g::r-x,o::r-x

Łącząc efekt tych domyślnych ACL z argumentem mode wynoszącym 0666 (rw-rw-rw-), wynikowym uprawnieniem pliku byłoby 0644 (rw-r--r--).

Stałe, których należy używać do podawania mask, są opisane w podręczniku inode(7).

Typową wartością domyślną dla umask procesu jest S_IWGRP | S_IWOTH (ósemkowe 022). W standardowym przypadku, gdy argument mode do open(2) określono jako:


S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH

(ósemkowe 0666) przy tworzeniu nowego pliku, uprawnienia pliku wynikowego będą wynosiły:


S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH

(ponieważ 0666 & ~022 = 0644; tj. rw-r--r--).

Ta funkcja systemowa zawsze kończy się pomyślnie i zwraca poprzednią wartość maski.

POSIX.1-2008.

POSIX.1-2001, SVr4, 4.3BSD.

Proces potomny utworzony za pomocą fork(2) dziedziczy umask swojego rodzica. Umask nie jest zmieniana przez execve(2).

Nie da się wykorzystać umask() do pobrania umask procesu, bez jego zmiany. W takim przypadku, konieczne byłoby zatem drugie wywołanie umask(), aby przywrócić pierwotną wartość umask. Ze względu na to, że te dwa kroki nie są niepodzielne, występuje tu możliwa sytuacja wyścigu w programach wielowątkowych.

Od Linuksa 4.7, umask dowolnego procesu można obejrzeć w polu Umask w pliku /proc/pid/status. Sprawdzenie tego pola w /proc/self/status pozwala procesowi na pobranie swojej umask, bez jej zmieniania.

Ustawienie umask wpływa również na uprawnienia przypisane do obiektów IPC POSIX (mq_open(3), sem_open(3), shm_open(3)), FIFO (mkfifo(3)) oraz gniazd domeny Uniksa (unix(7)) tworzonych przez proces. Maska umask nie wpływa na uprawnienia przypisane do obiektów IPC Systemu V tworzonych przez proces (za pomocą msgget(2), semget(2), shmget(2)).

chmod(2), mkdir(2), open(2), stat(2), acl(5)

Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Przemek Borys <pborys@dione.ids.pl>, Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl> i Michał Kułach <michal.kulach@gmail.com>

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.

2 maja 2024 r. Linux man-pages 6.9.1