9.8. Назначение разрешений по умолчанию с использованием маски umask

Проблема

Файлы создаются с некоторым стандартным набором разрешений по умолчанию. Как задать эти разрешения?

Решение

Разрешения по умолчанию определяются маской umask. Чтобы узнать текущее состояние маски, введите команду:

$ umask
0022

ИЛИ

$ umask -S
u=rwx,g=rx,o=rx

Чтобы временно назначить новую маску до конца текущего сеанса, введите команду:

$ umask 0002

Долгосрочное изменение маски umask обеспечивается включением строки umask хххх в файл ~/.bashrc. Часто используемые значения umask перечислены в таблице ниже:

Таблица 9.3. Часто используемые значения umask
UmaskПользовательГруппаПрочие
0002ВсеЧтение и исполнениеЧтение и исполнение
0022ВсеЧтение и исполнениеЧтение и исполнение
0007ВсеНетНет
0077ВсеНетНет

Когда программа (например, текстовый редактор или компилятор) создаёт файл, она обычно использует разрешения 0666 или 0777. Если программа создает исполняемый файл, то устанавливаются разрешения 0777. Однако чаще всего используются значения 0666, из-за чего для сценариев приходится вручную задавать права на выполнение командой chmod +x.

Маска umask позволяет исключить лишние разрешения. Например, при назначении маски umask 0002, обычным файлам будут назначаться разрешения 0664, а исполняемым — 0775, что предотвращает открытый доступ для записи.

Комментарий

В таблице 9.4 показано, как составить маску umask для любой комбинации разрешений.

Таблица 9.4. Все значения umask
UmaskРазрешения файловРазрешения каталогов
7НетИсполнение
6ЗаписьЗапись
5ЗаписьЗапись и исполнение
4ЧтениеЧтение
3Чтение и записьЧтение и исполнение
2Чтение и записьЧтение и запись
1Чтение и записьЧтение, запись и исполнение
0Чтение и записьЧтение, запись и исполнение

См. также

umask(1) — руководство по команде umask