← Назад к вопросам

С какими правами создается файл

1.0 Junior🔥 281 комментариев
#Linux и администрирование

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Создание файла: права доступа по умолчанию

При создании нового файла в Unix-подобных системах (Linux, macOS) его права доступа (permissions) определяются двумя ключевыми механизмами: маской создания файлов (umask) и правами, передаваемыми системным вызовом. Понимание этого процесса критично для DevOps, так как влияет на безопасность и функционирование приложений.

Базовый механизм

Системный вызов open() с флагом O_CREAT или creat() требует указания начальных прав в аргументе mode. Однако итоговые права вычисляются по формуле:

итоговые_права = запрошенные_права & ~umask

Где:

  • Запрошенные права — обычно 0666 для файлов (чтение и запись для владельца, группы и остальных)
  • umask — битовая маска, которая "вычитается" из запрошенных прав
  • Побитовая операция & ~umask отключает биты, установленные в umask

Типичный сценарий

В большинстве shell-сессий umask по умолчанию равна 0022 или 0002:

# Проверка текущей umask
$ umask
0022

# Создание файла
$ touch новый_файл.txt
$ ls -l новый_файл.txt
-rw-r--r-- 1 user group 0 Jan 1 10:00 новый_файл.txt

Анализ результата:

  1. Запрошенные права: 0666 (rw-rw-rw-)
  2. Применяется umask 0022 (-----w--w-)
  3. Итог: 0666 & ~0022 = 0644 (rw-r--r--)

Вариации umask

Разные среды могут использовать различные значения umask:

# Безопасная настройка (только владелец имеет доступ)
$ umask 0077
$ touch секретный_файл.txt
$ ls -l секретный_файл.txt
-rw------- 1 user group 0 Jan 1 10:00 секретный_файл.txt

# Более либеральная настройка (разрешить доступ группе)
$ umask 0007
$ touch общий_файл.txt
$ ls -l общий_файл.txt
-rw-rw---- 1 user group 0 Jan 1 10:00 общий_файл.txt

Практическое значение для DevOps

  1. Безопасность по умолчанию — правильно настроенная umask предотвращает случайное создание файлов с избыточными правами
  2. Воспроизводимость сред — umask должна учитываться при контейнеризации и оркестрации
  3. Совместимость приложений — некоторые приложения (веб-серверы, СУБД) требуют специфичных прав для рабочих файлов

Рекомендации по настройке

Для производственных сред я рекомендую:

# В скриптах инициализации явно устанавливать umask
umask 0027  # Владелец: rwx, Группа: r-x, Остальные: ---

# Для чувствительных служб использовать более строгие настройки
umask 0077  # Только владелец имеет доступ

Важно: Права, с которыми создается файл — это только начальная точка. Дальнейшие изменения через chmod, наследование прав в файловых системах с поддержкой ACL, или SELinux/AppArmor контексты могут дополнительно модифицировать доступ.

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

С какими правами создается файл | PrepBro