Гид по технологиям

umask в Linux — как задать права по умолчанию для новых файлов

5 min read Linux Обновлено 13 Apr 2026
umask в Linux — как задать права по умолчанию
umask в Linux — как задать права по умолчанию

Filing cabinet

Описание изображения: металлический картотечный шкаф с ящиками для документов, символизирующий хранение файлов и прав доступа.

Что такое umask?

Umask — это битовая маска (bit mask), которая определяет, какие права будут удалены у вновь создаваемых файлов и директорий. Проще: umask задаёт «запреты» по умолчанию. Он использует восьмеричную (октал) нотацию, аналогичную chmod.

Определение в одну строку: umask — маска, вычитающая права из стандартного режима новых объектов.

Важно: umask указывает права, которые нужно убрать, а не которые дать.

Как работает umask — быстрое объяснение

  • Базовый (исходный) режим для файлов обычно 666 (rw-rw-rw-). Для директорий — 777 (rwxrwxrwx).
  • Когда вы создаёте файл, система вычитает биты umask из базового режима. Результат — реальные права нового файла.

Примеры:

  • umask 022 → файлы: 666−022 = 644 (rw-r–r–), директории: 777−022 = 755 (rwxr-xr-x).
  • umask 077 → файлы: 666−077 = 600 (rw——-), директории: 777−077 = 700 (rwx——).
  • umask 002 → файлы: 666−002 = 664 (rw-rw-r–), директории: 777−002 = 775 (rwxrwxr-x).

Эти примеры помогают быстро представить, какие права получат новые объекты.

umask showing octal and symbolic permissions in the shell

Описание изображения: вывод в терминале с показом восьмеричной и символьной формы umask и прав доступа.

Команды для просмотра и тестирования

  • Посмотреть текущую umask (символически):
umask -S
  • Посмотреть текущую umask (восьмерично):
umask
  • Установить umask в текущей сессии:
umask 022
  • Проверить результат: создайте временный файл и проверьте ls -l.
touch /tmp/testfile && ls -l /tmp/testfile

Где задавать umask для одного пользователя

Чтобы umask применялся при каждой новой сессии пользователя, добавьте команду в файл инициализации оболочки:

  • Bash: ~/.bashrc, ~/.profile или ~/.bash_profile (в зависимости от дистрибутива и типа сессии).
  • Zsh: ~/.zshrc.

Пример добавления в ~/.bashrc:

# Установить безопасный umask для пользователя
umask 027

После правки выполните source ~/.bashrc или перезапустите сессию.

Системная настройка umask для всех пользователей

На серверах имеет смысл задать умаск глобально:

  • Добавьте строку umask 027 в /etc/profile — этот файл читают интерактивные логин-оболочки (bash/zsh).
  • Для csh/tcsh используйте /etc/csh.cshrc и /etc/csh.login.
  • В системах на systemd можно задать Umask= в unit-файле сервиса (см. пример дальше).

Примечание: изменение глобального umask влияет на всех пользователей и процессы, поэтому тестируйте изменения в тестовой среде.

Umask в systemd (пример)

Чтобы сервис systemd запускал процессы с нужным umask, добавьте в unit-файл:

[Service]
Umask=027

После изменения выполните systemctl daemon-reload и перезапустите сервис.

Альтернативы и дополнительные механизмы контроля прав

  • ACL (Access Control Lists): с помощью setfacl/getfacl можно задать более гибкие права на файл/директорию.
  • POSIX capabilities и SELinux/AppArmor для усиленного контроля безопасности на уровне политики.
  • Шаблоны umask в PAM: модуль pam_umask позволяет задавать umask при аутентификации.

Когда umask не покрывает нужды — используйте ACL или политические механизмы безопасности.

Ментальные модели и эвристики

  • Думайте об umask как о «фильтре удаления» прав: он убирает, а не добавляет.
  • Для серверов безопасное стартовое значение — 027 или 077 (в зависимости от требований к совместному доступу).
  • Для рабочих станций с совместным доступом к файлам часто используют 002 или 022.

Роль‑ориентированный чеклист (администратор / разработчик / пользователь)

  • Администратор:

    • Задокументировать выбранный umask в политике безопасности.
    • Применить umask глобально и протестировать создание файлов сервисами.
    • Проверить совместимость с systemd и PAM.
  • Разработчик:

    • Убедиться, что тестовые окружения применяют тот же umask, что и продакшен.
    • Если нужно совместное редактирование, использовать umask 002 и группу проекта.
  • Обычный пользователь:

    • Добавить umask в ~/.bashrc при необходимости конфиденциальности (например, 077).
    • Проверить права созданных файлов командой ls -l.

Быстрый чеклист / Шпаргалка

  • Просмотреть: umask или umask -S
  • Установить временно: umask 022
  • Добавить навсегда: в ~/.bashrc или /etc/profile
  • Systemd сервис: Umask=027 в unit-файле
  • Проверить результат: touch /tmp/test && ls -l /tmp/test

Критерии приёмки

  • Для пользователя: при создании файла права соответствуют ожидаемым (например, 600 для umask 077).
  • Для сервиса: после перезапуска сервиса новые файлы и сокеты имеют права, соответствующие Umask= в unit-файле.
  • Для системы: глобальный umask корректно применяется новым интерактивным сессиям.

Безопасность и приватность

Umask — это лишь один уровень контроля. Не полагайтесь на него для защиты конфиденциальных данных от привилегированных пользователей (root). Для дополнительной защиты используйте шифрование, контроль доступа на уровне приложений и политики SELinux/AppArmor.

Важно: умаск не изменяет права уже существующих файлов. Для массовой корректировки прав используйте chmod/chown или инструменты управления конфигурацией.

Когда umask не подходит: примеры

  • Нужна тонкая настройка прав для отдельных пользователей/групп → используйте ACLs.
  • Служба создаёт файлы с неверными правами, потому что systemd unit не имеет Umask → настройте unit-файл.
  • Требуется шифрование содержимого, а не только права → используйте gpg/encfs/FS-level encryption.

Итог и рекомендации

Umask — простой и эффективный способ задать права по умолчанию для новых файлов и директорий. Для большинства серверов рекомендуется 027; для персональных рабочих станций — 022 или 002 в зависимости от требований к совместному доступу. Комбинируйте umask с ACL и политиками безопасности, если нужно более точное разграничение доступа.

Короткое резюме: установите umask там, где удобно (пользовательский .bashrc или глобально в /etc/profile), проверьте с umask -S и протестируйте создание файлов. Если нужно, дополните защиту ACL или политиками безопасности.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Основные сетевые команды Linux
Сетевое администрирование

Основные сетевые команды Linux

Чтение вслух в Microsoft Word — как включить и настроить
Продуктивность

Чтение вслух в Microsoft Word — как включить и настроить

Как использовать iMessage на Android через AirMessage
Инструкции

Как использовать iMessage на Android через AirMessage

Блок‑схема в Pages на Mac — быстрое руководство
Руководство

Блок‑схема в Pages на Mac — быстрое руководство

Восстановление пароля Gmail: настройка и советы
Безопасность

Восстановление пароля Gmail: настройка и советы

Включить тёмную тему в Skype
Инструкции

Включить тёмную тему в Skype