Что такое umask в Linux?

«Что такое umask в Linux?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

umask (user file creation mask) — это маска прав доступа по умолчанию, которая определяет, какие биты прав будут сняты у вновь создаваемых файлов и директорий. Это не права, которые будут установлены, а именно маска для их "запрета".

Как это работает на практике: Система имеет базовые права по умолчанию:

  • Для директорий: 0777 (rwxrwxrwx)
  • Для обычных файлов: 0666 (rw-rw-rw-)

При создании нового объекта система вычитает значение umask из этих базовых прав.

Примеры расчета:

# Установим umask 022 (самое распространенное значение)
umask 022

# Создадим директорию и файл
mkdir new_dir    # Права: 777 - 022 = 755 (rwxr-xr-x)
touch new_file   # Права: 666 - 022 = 644 (rw-r--r--)

# Установим umask 027 (более строгий)
umask 027
mkdir secure_dir # Права: 777 - 027 = 750 (rwxr-x---)
touch secure_file # Права: 666 - 027 = 640 (rw-r-----)

Где и как задается umask для DevOps-задач:

  1. Глобально: В конфигурационных файлах оболочки (/etc/profile, /etc/bash.bashrc) для всех пользователей.
  2. Для системных служб (systemd): Критически важно для безопасности. Сервисы, запущенные от root, могут создавать файлы с правами 666/777, что опасно. В файле сервиса (.service) нужно явно задавать:
    [Service]
    ...
    UMask=0027  # Создаваемые файлы будут доступны только владельцу и группе
  3. В CI/CD пайплайнах и скриптах: Перед созданием артефактов, конфигураций или логов следует явно устанавливать строгий umask, чтобы случайно не создать файлы, доступные для записи всем (umask 077 создает права 600/700).
  4. Для совместных рабочих директорий: Если несколько пользователей (например, в группе developers) должны работать с одними файлами, используется umask 002 (права 775/664), что сохраняет бит группового доступа.