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