Сценарий

Права на файле правильные, а прочитать его нельзя

Скрипт выкладки падает на чтении конфигурации. У самого файла права 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 покажет и то, и другое. Права всегда считаютс

Бесплатно с аккаунтом

Дальше бесплатно, нужен только аккаунт

Урок открывается после входа. Создай бесплатный аккаунт, чтобы дочитать его и запустить лабораторию.

Создать бесплатный аккаунт

Уже есть аккаунт? Войти