umask
umask (от англ. user file creation mode mask — маска режима создания пользовательских файлов) — функция среды POSIX, изменяющая права доступа, которые присваиваются новым файлам и каталогам по умолчанию. Права доступа файлов, созданных при конкретном значении umask, вычисляются при помощи следующих побитовых операций (umask обычно устанавливается в восьмеричной системе счисления):
- побитовое И между унарным дополнением аргумента (используя побитовое НЕ) и режимом полного доступа.
Режим полного доступа для каталогов — 777, для файлов — 666. Многие оболочки UNIX предоставляют команду umask, которая влияет на все дочерние процессы, исполняемые в этой оболочке.
Фактически, umask указывает, какие биты следует сбросить в выставляемых правах на файл — каждый установленный бит umask запрещает выставление соответствующего бита прав. Исключением из этого запрета является бит исполняемости, который для обычных файлов зависит от создающей программы (трансляторы ставят бит исполняемости на создаваемые файлы, другие программы — нет), а для каталогов следует общему правилу. umask 0 означает, что следует (можно) выставить все биты прав (rwxrwxrwx), umask 777 запрещает выставление любых прав.
Примеры
[править | править код]Допустим, что значение umask равняется 174, тогда каждый новый файл будет иметь права доступа 602, а каждый новый каталог — 603:
(rwx rwx rwx)
1748 = (001 111 100)2 НЕ(1748) = (110 000 011)2 6668 = (110 110 110)2 -------------- 6668 И НЕ(1748) = (110 000 010)2 = 6028 = (rw- --- -w-)
1748 = (001 111 100)2 НЕ(1748) = (110 000 011)2 7778 = (111 111 111)2 -------------- 7778 И НЕ(1748) = (110 000 011)2 = 6038 = (rw- --- -wx)
В bash:
$ umask 0174 $ mkdir каталог $ touch файл $ ls -l drw-----wx 2 dave dave 512 Sep 1 20:59 каталог -rw-----w- 1 dave dave 0 Sep 1 20:59 файл
См. также
[править | править код]- chmod — программа для изменения прав доступа к файлам и каталогам.
Ссылки
[править | править код]- umask(2) — страница man из OpenBSD (англ.)
- «Установка прав доступа» из «The GNU C Library Reference Manual» (англ.)