Сценарий
Права на файле правильные, а прочитать его нельзя
Скрипт выкладки падает на чтении конфигурации. У самого файла права 644 и читать его может кто угодно.
Выкладка релиза перестала проходить. Скрипт запускается от служебного пользователя deploy и падает на первом же шаге: не может прочитать конфигурацию. Права на файле при этом выглядят совершенно обычно.
Симптом
От root скрипт работает, от deploy - нет. Файл, на котором он падает, доступен на чтение всем.
$ sudo /opt/release/publish.sh
published r-7731
$ sudo -u deploy /opt/release/publish.sh
grep: /srv/config/app.conf: Permission denied
publish: cannot read /srv/config/app.conf
$ sudo ls -l /srv/config/app.conf
-rw-r--r-- 1 root appcfg 36 Aug 18 09:14 /srv/config/app.confСтрока -rw-r--r-- и есть права 644, а они означают «читать может кто угодно». И тем не менее прочитать не выходит. Значит, дело не в этом файле.
Что надо получить
Четыре условия. Скрипт /opt/release/publish.sh, запущенный от пользователя deploy, печатает строку с токеном релиза. Права нигде не выкручены в 777: раздать всем всё - это не починка, а новая проблема. Содержимое /srv/config/app.conf не изменилось: переписывать конфигурацию, чтобы обойти права, не надо. И сам скрипт не изменён: чинятся права, а не программа, которая в них упёрлась.
Как разбирать «Permission denied»
Первое: посмотри, от кого именно запускается то, что падает, и в каких он группах. Команда id deploy покажет и то, и другое. Права всегда считаютс
Дальше бесплатно, нужен только аккаунт
Урок открывается после входа. Создай бесплатный аккаунт, чтобы дочитать его и запустить лабораторию.
Уже есть аккаунт? Войти