bitlvl
RU

Калькулятор umask

umask убирает биты прав у новых файлов. Введите её, чтобы увидеть результат, или отметьте права, которые должны получать новые файлы и каталоги.

Убираемые биты
r
w
x
Владелец
Группа
Остальные

Результаты и сообщения этого инструмента выводятся на английском языке.

Как работает umask

Когда программа создаёт файл, она запрашивает режим — почти всегда 666 (rw-rw-rw-) для файлов и 777 для каталогов. Затем ядро сбрасывает каждый бит, установленный в umask процесса. С обычной 022 убираются биты записи для группы и остальных: файлы становятся 644, каталоги — 755. С 077 для группы и остальных убирается всё: 600 и 700. Маска может только отнимать права, но не добавлять; файл никогда не получит выполнение от umask, потому что у 666 его и не было.

Арифметика здесь — mode & ~umask, побитовое И с инвертированной маской, а не вычитание, поэтому umask 027 на 666 даёт 640, а не 639.

Распространённые значения

umaskФайлыКаталогиДля чего
022644755По умолчанию в большинстве дистрибутивов; остальные могут читать.
002664775Debian/Ubuntu для пользователей с личной группой; члены группы могут писать.
077600700Приватно по умолчанию: серверы, домашние каталоги с секретами.
027640750Группа может читать, остальные — ничего; распространённая база для hardening (CIS).

Где она задаётся

  • Shell: umask выводит её, umask 027 задаёт для сессии; поместите её в ~/.profile или /etc/profile. umask -S показывает её в символьной форме.
  • Вход в систему: /etc/login.defs (UMASK) и pam_umask задают значение до запуска оболочки; /etc/profile в Debian выводит его из того, есть ли у пользователя личная группа.
  • Сервисы systemd: UMask=0077 в секции [Service]; сервисы не читают профили оболочки.
  • cron: задания выполняются с 022 независимо от настроек оболочки пользователя; задайте её внутри скрипта.
  • Docker: по умолчанию в контейнере 022; измените её в entrypoint или через umask в команде.

Вопросы

Почему мои новые файлы получают 644, когда мне нужно 664?

Ваша umask — 022. Задайте umask 002 (и убедитесь, что группа каталога — та, что вам нужна, с битом setgid на каталоге, чтобы новые файлы её наследовали).

Влияет ли umask на chmod?

Нет. chmod задаёт точные биты. umask применяется только при создании файла без явного режима, то есть почти всегда.

Почему каталог получает выполнение, а файл нет?

Каталоги создаются с 777 до применения маски, файлы — с 666. Выполнение на каталоге означает «можно войти»; файлам нужен явный chmod +x.

Отличается ли четырёхзначная umask?

Ведущий 0 (0022) — просто восьмеричная запись. Первая цифра маскировала бы setuid/setgid/sticky, которые создающие процессы никогда не запрашивают, так что на практике эффекта нет.