Короткий ответ
umask — маска, которая вычитает (маскирует) определённые биты прав из прав по умолчанию при создании новых файлов и каталогов; стандартные права по умолчанию 666 для файлов и 777 для каталогов, из которых umask убирает указанные биты.
Как это работает подробнее
При создании файла ядро/библиотека берёт базовые права (666 для файлов, 777 для каталогов) и применяет побитовое И с инверсией umask, поэтому, например, umask 022 даёт файлам права 644, а каталогам — 755, убирая право записи для группы и остальных.
Пример кода
commands.sh
umask
umask 027
touch secret.conf
ls -l secret.confЧто использовать на практике
- Практика. umask задают на уровне shell-профиля пользователя или сервисного процесса (systemd поддерживает директиву UMask= в unit-файле), чтобы все создаваемые приложением файлы по умолчанию имели предсказуемо безопасные права без явного chmod после каждого создания файла.
Подводные камни
- Риск. Частая ошибка — не учитывать umask процесса, который создаёт конфиденциальные файлы (например, с секретами), из-за чего новые файлы получают избыточно широкие права на чтение для группы или всех.