umask (от англ. user file creation mode mask — маска режима создания пользовательских файлов) — функция среды POSIX, изменяющая права доступа, которые присваиваются новым файлам и директориям по умолчанию. Режим полного доступа для файлов — 666, для директорий — 777. Многие оболочки UNIX предоставляют команду umask, которая влияет на все дочерние процессы, исполняемые в этой оболочке.
Фактически, umask указывает, какие биты следует сбросить в выставляемых правах на файл — каждый установленный бит umask запрещает выставление соответствующего бита прав. Исключением из этого запрета является бит исполняемости, который для каталогов выставляется особо. umask 0 означает, что следует (можно) выставить все биты прав (rwxrwxrwx), umask 777 запрещает выставление любых прав.
По умолчанию umask в OpenBSD 4.9 имеет значение 022, что выражается в правах доступа на каталоги 755 и на файлы 644. Для того что бы выяснить текущее значение umask нужно выполнить эту команду без параметров:
umask
022
UMASK обычно определяется в /home/user/.profile or /etc/profile за исключением редких случаев когда можно/нужно определить umask для отдельного процесса. Для начала вспомним команду chmod.
Вычисление chmod
Права указываются в формате chmod 0755, значение каждой цифры:
- 0 - первая цифра управляет sticky bit-ом, 0=снят, 1=установлен;
- 7 - вторая цифра от 0 до 7 определяет права владельца, как правило всегда 7 для каталогов и 6 для файлов;
- 5 - третья цифра от 0 до 7 определяет права групп, как правило всегда 5 для каталогов и 4 для файлов;
- 5 - четвёртая цифра от 0 до 7 определяет публичные права, как правило всегда 5 для каталогов и 4 для файлов;
Значение цифр в диапазоне от 0 до 7:
- 0 - Нет никаких прав;
- 1 - Разрешить выполнение (или поиск по каталогам);
- 2 - Разрешить запись;
- 3 - Разрешить запись и выполнение;
- 4 - Разрешить чтение;
- 5 - Разрешить чтение и выполнение;
- 6 - Разрешить чтение и запись;
- 7 - Разрешить чтение, запись и выполнение / поиск других.
Установка sticky bit
Впервые sticky bit появился в пятой редакции UNIX в 1974 году для использования в исполняемых файлах. Он применялся для уменьшения времени загрузки наиболее часто используемых программ. После закрытия программы код и данные оставались в памяти, а следующий запуск происходил быстрее.
Сегодня sticky bit используется в основном для директорий, чтобы защитить в них файлы. Из такой директории пользователь может удалить только те файлы, владельцем которых он является. Примером может служить директория /tmp, в которой запись открыта для всех пользователей, но нежелательно удаление чужих файлов. Установка атрибута sticky bit производится утилитой chmod.
chmod 1777 ./dirname # or chmod +t ./dirname
Снятие атрибута sticky bit:
chmod 0777 ./dirname # or chmod -t ./dirname
Способ вычисления umask
Задать umask для пользователя можно в файле /home/user/.profile банальным добавлением строки:
vi /home/user/.profile .... umask 022
Нужно помнить, что когда umask определяется в /home/user/.profile, то для вступления изменений в силу нужно выйти и снова войти в систему!
Так же следует взять во внимание, что umask установленный в /home/user/.profile или /etc/profile действует только для консольного режима создания файлов и каталогов и не распространяется на файлы/каталоги загружаемые по FTP или SFTP!