table of contents
umask(2) | System Calls Manual | umask(2) |
NAZWA¶
umask - ustawia maskę uprawnień tworzonych plików
BIBLIOTEKA¶
Standardowa biblioteka C (libc, -lc)
SKŁADNIA¶
#include <sys/stat.h>
mode_t umask(mode_t mask);
OPIS¶
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--).
WARTOŚĆ ZWRACANA¶
Ta funkcja systemowa zawsze kończy się pomyślnie i zwraca poprzednią wartość maski.
STANDARDY¶
POSIX.1-2008.
HISTORIA¶
POSIX.1-2001, SVr4, 4.3BSD.
UWAGI¶
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)).
ZOBACZ TAKŻE¶
TŁUMACZENIE¶
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 (niewydane) |