Какие аргументы передать в chmod для установки прав
Что проверяют
Знаете ли вы модель прав Linux достаточно, чтобы не гадать на тестовом стенде, почему скрипт не запускается или сервис не читает конфиг. Следом обычно просят показать текущие права и объяснить, что значит x у каталога.
Как отвечать
У chmod два синтаксиса, покажите оба.
Символьный: кому, операция, какие права. Кому: u владелец, g группа, o остальные, a все. Операция: + добавить, - убрать, = задать ровно. Права: r, w, x. Примеры: chmod u+x run_tests.sh, chmod go-w config.yml, chmod a=r report.txt. Несколько правил через запятую: chmod u=rwx,g=rx,o= deploy.sh.
Числовой (восьмеричный): каждая цифра это сумма 4 (чтение), 2 (запись) и 1 (выполнение) для владельца, группы и остальных по порядку. Типовые значения:
- 755: исполняемые скрипты и каталоги, владелец пишет, остальные читают и заходят;
- 644: обычные файлы, логи, конфиги без секретов;
- 600: ключи и файлы с паролями. Приватный SSH-ключ с более открытыми правами
sshпросто откажется использовать; - 700: личный каталог или скрипт только для владельца.
Полезные флаги: -R рекурсивно, -v печатает, что изменено. Проверить результат: ls -l или stat -c %a файл.
Что стоит добавить именно тестировщику: у каталога r разрешает читать список файлов, x разрешает войти в него и обращаться к файлам по имени, а удалить файл можно при праве записи в каталог, права самого файла тут не решают. Четвёртая цифра спереди задаёт setuid, setgid и sticky bit, например 1777 у /tmp.
Где спотыкаются
Советуют chmod 777, чтобы «заработало». Это прячет настоящую проблему с владельцем или группой, которая решается через chown, и оставляет дыру на стенде.
Запускают chmod -R 755 на всё дерево и делают исполняемыми все файлы подряд. Для раздельной настройки есть X в символьном режиме или find с -type f и -type d.
Путают права и владельца. chmod не меняет, чей файл, и если сервис работает под другим пользователем, группа и chown важнее любых цифр.