Что такое umask и как настроить права по умолчанию в Linux

Umask — это «битовая маска», которая определяет, какие биты разрешений будут удалены при создании новых файлов и директорий. На Linux umask доступна как отдельная команда, а в современных оболочках (Bash, Zsh) она обычно встроена.
Как umask работает
Umask использует восьмеричную запись, аналогичную chmod. Вместо того чтобы явно задавать права, umask говорит системе, какие права отменять. Формально права файла вычисляются как (маска базовых прав) minus (umask). Для файлов базовый набор обычно 666 (rw-rw-rw-), а для директорий — 777 (rwxrwxrwx). Это означает, что umask влияет по-разному на файлы и папки.
Короткое определение: umask — маска, удаляющая права у новых объектов.
Важно: umask не «даёт» права, она только убирает их из начального набора. Если вы используете программу, которая явно устанавливает права (например, создаёт файл с chmod), umask может не применяться.
Как посмотреть текущую umask
Откройте терминал и выполните:
umaskЧтобы увидеть символьное представление, используйте:
umask -SОба варианта безопасно работают в Bash и Zsh.
Установка umask для одного сеанса или пользователя
Чтобы временно установить umask в текущем сеансе:
umask 022Чтобы применять значение автоматически при каждой загрузке оболочки, добавьте строку в файл запуска вашей оболочки, например в ~/.bashrc или ~/.zshrc:
# В ~/.bashrc
umask 022После редактирования перезапустите оболочку или выполните source ~/.bashrc.
Системная umask для всех пользователей
На серверах и в многопользовательских средах имеет смысл установить системную умask. Для Bourne-подобных оболочек (bash, dash, zsh) обычно правят /etc/profile или скрипты в /etc/profile.d/:
# В /etc/profile или /etc/profile.d/99-umask.sh
umask 027Для csh/tcsh используются /etc/csh.cshrc и /etc/csh.login соответственно. Изменения в системных файлах требуют прав root и аккуратности: проверьте влияние на сервисы и фоновые задачи.
Распространённые значения umask и их смысл
- 022 — владелец: rw-, группа: r–, остальные: r–. Удаляет запись для группы и остальных. Часто по умолчанию на серверах и рабочих станциях.
- 002 — владелец: rw-, группа: rw-, остальные: r–. Удобно для командной работы, когда файлы нужно делить внутри группы.
- 027 — убирает запись для группы и все права для остальных; хорош для серверов, где требуется ограничить доступ извне.
- 077 — владелец: rw-, группа: —, остальные: —. Максимально приватная настройка для личных данных.
Факто-бокс: ключевые числа
- Базовые права для файлов: 666
- Базовые права для директорий: 777
- Частые umask: 022, 002, 027, 077
Когда umask не подходит или не действует
- Программы, которые явно задают права (например, устанавливают chmod после создания файла), могут игнорировать umask.
- Некоторые службы создают файлы под своим системным пользователем: потребуется править службу или её unit-файл systemd.
- Если требуется версиированная или шифрованная защита, umask не заменит шифрование или контроль доступа на уровне приложений.
Примеры отказа: если процесс запускается через systemd с директивой ProtectHome или сесcией, системная umask может не примениться—нужно править конфигурацию сервиса.
Альтернативы и усиление безопасности
- Используйте ACL (getfacl/setfacl) для тонкой настройки прав на уровне файловой системы.
- Шифруйте файлы или директории (e.g., ecryptfs, LUKS) для защиты содержимого независимо от прав.
- Настройте systemd-юниты: добавьте строку
UMask=в unit-файл для сервисов. - Для совместной работы групп используйте общий каталог с SGID-битом (chmod g+s) и umask 002.
Методика выбора umask (мини-инструкция)
- Оцените тип среды: персональная или многопользовательская.
- Определите требуемый уровень доступа группы и «остальных».
- Выберите umask: 077 для личных данных, 027 для серверов, 002 для рабочих групп.
- Примените локально и протестируйте: создайте файлы и проверьте права
ls -l. - Внедрите системно, если тест пройден.
Чеклист для администратора
- [ ] Просмотреть текущую umask (
umask -S). - Протестировать выбранную umask локально и для служб.
- Внести изменения в /etc/profile или соответствующие файлы для оболочки.
- Перезапустить сервисы, если требуется, и проверить поведение.
- Документировать политику прав в README администрирования.
Шпаргалка: команды и шаблоны
Установить временно:
umask 027Посмотреть символически:
umask -SСистемное задание (пример для /etc/profile.d/):
# файл /etc/profile.d/umask.sh
umask 027Добавление для systemd-сервиса (пример в unit-файле):
[Service]
UMask=027Критерии приёмки и тесты
- Создайте файл и директорию:
touch testfile && mkdir testdir. - Проверьте права:
ls -l testfile testdir. - Ожидаемый результат для umask 027: файл rw-r—–, директория rwxr—–.
- Запустите сервисы, которые создают файлы, и убедитесь, что их файлы имеют ожидаемые права.
Роли и рекомендации
- Для системного администратора: устанавливайте системный umask и контролируйте службы через systemd.
- Для разработчика в команде: используйте umask 002 и настройте группу проекта.
- Для бытового пользователя: 022 или 077 в зависимости от необходимости приватности.
Important: Изменение системной umask влияет на все пользователи и сервисы. Тщательно тестируйте изменения в staging перед продакшеном.
Короткое резюме
Umask — простой и мощный инструмент для управления правами новых файлов в Linux. Правильный выбор значения помогает балансировать между удобством совместной работы и безопасностью. Для сервисов используйте системные настройки и при необходимости комбинируйте umask с ACL и шифрованием.
Notes: Если нужны инструкции для конкретной дистрибуции или примеры unit-файлов systemd, добавьте информацию о среде (дистрибутив, версия systemd).
Похожие материалы
Echo Buttons: игры и настройка для идеальной игровой вечери
Как проверить: устарел ли ваш iPhone
Метрированное подключение в Windows 11: как ограничить трафик
Печать на Linux: USB, сеть и резервные планы
Игры с голосом в Android Auto — как играть в машине