Когда скрипт создаёт файлы, права зависят не только от chmod в самом скрипте. На итоговые права влияет umask текущего процесса.
Обычный временный файл может получиться доступнее, чем хотелось бы:
touch backup.env
ls -l backup.env
Если внутри лежат токены, пароли или дампы конфигов, это уже опасно. Особенно на сервере, где есть несколько пользователей или служебных аккаунтов.
umask позволяет заранее запретить лишние права для новых файлов:
umask 077
После этого новые файлы обычно будут доступны только владельцу. Группа и остальные пользователи не получат чтение по умолчанию.
Например, так можно безопаснее создавать файл с секретами:
umask 077
printf '%s\n' "$TOKEN" > token.txt
Проверить результат можно через ls:
ls -l token.txt
Ожидаемый формат будет похож на 600. То есть владелец может читать и писать, а остальные не имеют доступа.
Для директорий это тоже работает:
mkdir private-backups
При umask 077 новая директория обычно получит права 700. Это удобно для backup, временных ключей, ssh-конфигов и артефактов деплоя.
Если файл уже создан с неправильными правами, umask его не исправит. Тогда нужен chmod:
chmod 600 token.txt
umask хорошо закрывает простой класс ошибок. Скрипт перестаёт случайно создавать приватные файлы слишком открытыми.
➡️ DevOps Ready | #совет
