Scroll to navigation

(2) Руководство программиста Linux (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).

Константы, которые нужно использовать для указания в 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--).

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

Данный системный вызов всегда выполняется успешно и возвращает предыдущее значение маски.

СООТВЕТСТВИЕ СТАНДАРТАМ

SVr4, 4.3BSD, POSIX.1-2001.

ЗАМЕЧАНИЯ

Дочерний процесс, созданный с помощью 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)

2008-01-09 Linux