Падение сервиса обычно видно сразу. Мониторинг красный, пользователи жалуются, в логах ошибка. Перезапустили, откатили, восстановили. А вот один неверный
chmod -R может сломать прод намного тише и неприятнее. Классический сценарий:
chmod -R 777 /var/www
или еще хуже:
chmod -R 755 /
Хотели быстро пофиксить права, а получили хаос.
▪️ Почему это опасно?
Права в linux - это не просто можно читать или нельзя.
От них зависит работа сервисов, безопасность, SSH, sudo, systemd, базы данных, веб-приложения и приватные ключи.
▪️ Что может сломаться:
• SSH перестанет принимать ключи, потому что~/.ssh и authorized_keysстали слишком открытыми
• приватные ключи начнут считаться небезопасными
• nginx/apache потеряют доступ к нужным файлам или, наоборот, получат лишний доступ
• база данных откажется стартовать из-за неправильных прав на data directory
• sudo может начать ругаться на права конфигов
• приложения начнут писать туда, куда не должны
• исполняемые файлы потеряют нужные биты
▪️ Особенно опасны рекурсивные команды с переменными:
chmod -R 755 "$DIR"
Если
$DIR пустой, неправильный или подставился не тот путь - последствия могут быть очень неприятными.Перед такими командами лучше явно проверять переменные:
: "${DIR:?DIR is empty}"
И сначала смотреть, куда команда попадет:
find "$DIR" -maxdepth 2 -print
Для файлов и директорий права часто должны отличаться.
🤩 Плохо:
chmod -R 755 /var/www/app
🤩 Лучше:
find /var/www/app -type d -exec chmod 755 {} +
find /var/www/app -type f -exec chmod 644 {} +
Так директории остаются проходимыми, а обычные файлы не становятся исполняемыми без необходимости.
▪️ Если нужно дать права конкретному пользователю, часто правильнее менять владельца:
chown -R www-data:www-data /var/www/app/storage
А не открывать все через 777.
777 - это почти всегда сигнал, что проблему не поняли, а просто выключили защиту.
Для диагностики полезно смотреть текущие права:
ls -la
namei -l /var/www/app/storage/file.log
stat /var/www/app/storage
namei -l особенно удобен: он показывает права на каждом уровне пути. Иногда файл доступен, но один из родительских каталогов не дает пройти дальше.
#linux #chmod
🧑💻 NetworkAdmin