UMASK(2)

ИМЯ
umask - устанавливает маску создания режима доступа к файлу

ОБЗОР
#include <sys/types.h>
#include <sys/stat.h>

mode_t umask(mode_t mask);

ОПИСАНИЕ
umask() устанавливает в вызывающем процессе значение маски (umask) создания режима доступа к файлу равным mask & 0777 (т.е. из mask используются только биты прав доступа к файлу) и возвращает предыдущее значение маски. Значение umask используется в open(2), mkdir(2) и других системных вызовах, которые создают файлы, для изменения прав, назначаемых на создаваемые файлы или каталоги. В частности, права в umask исключаются из аргумента mode у вызовов open(2) и mkdir(2). Также, если у родительского каталога указан ACL по умолчанию (смотрите acl(5)), то umask игнорируется, выполняется наследование ACL по умолчанию, бита прав назначаются согласно унаследованному ACL, а биты прав, отсутствующие в аргументе mode, выключаются. Например, следующий ACL по умолчанию эквивалентен umask 022:
    u::rwx,g::r-x,o::r-x Объединение эффекта этого ACL по умолчанию с аргументом mode 0666 (rw-rw-rw-) приводит установке прав на файл 0644 (rw-r--r--). Константы, которые нужно использовать для указания в mask, описаны в stat(2). Типичным значением umask в процессе является S_IWGRP | S_IWOTH (восьмеричное 022). Обычно, когда аргумент mode у open(2) задаётся как:
    S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH
(восьмеричное 0666) при создании файла, права получившегося файла будут:
    S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH
(так как 0666 & ~022 = 0644; т.е., rw-r--r--).

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
Данный системный вызов всегда выполняется успешно и возвращает предыдущее значение маски.

СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD.

ЗАМЕЧАНИЯ
Дочерний процесс, созданный с помощью fork(2), наследует umask родителя. Значение umask не изменяется при вызове execve(2). Настройка umask также влияет на права, назначаемые IPC-объектам POSIX (mq_open(3), sem_open(3), shm_open(3)), FIFO (mkfifo(3)) и доменным сокетам UNIX (unix(7)), создаваемых процессом. Значение umask не влияет на права, назначаемые IPC-объектам System V, создаваемых процессом (с помощью msgget(2), semget(2), shmget(2)).

СМОТРИТЕ ТАКЖЕ
chmod(2), mkdir(2), open(2), stat(2), acl(5)