У меня есть промежуточный сервер Ubuntu на AWS, который запускает крошечное приложение Sinatra с помощью тонкого веб-сервера.
Приложение sinatra выполняет несколько команд git clone
при вызове, и все отлично работает, когда я запускаю rackup
от своего пользователя.
Естественно, я хочу запустить сервер как демон, для этого я использовал rackup -D
и вызвал приложение. На этот раз я получил исключение из git, в котором говорится, что демон не авторизован для записи в целевую папку:
could not create work tree dir 'path/to/clone': Permission denied
Насколько я понимаю, демоны имеют те же привилегии, что и Пользователь, который запускает их так, как получается, что задача не удается? Я также попробовал chmod -R 777
каталог, но он не работал ..
Проверьте, имеет ли исполняемый файл setuid набор битов. Это заставило бы его работать как владелец файла, не пользователь, который запустил его. Можно проверить выполнение ls -l appname
и рассмотрение четвертого символа в маске полномочий (вместо исполнимого бита владельца). Если это s
затем, setuid укусил, установлен.
Демоны обычно устанавливаются работать с setuid, таким образом, они ожидаются к не , имеют полномочия пользователя, который запустил их. Это в отличие от приложений недемона, которые являются , ожидал иметь полномочия пользователя. Необходимо будет добавить использование демона r к группе файлов, которые Вы хотели бы затронутый и удостоверились бы, чтобы полномочия группы позволили действия.
Моя проблема закончила тем, что была самой стойкой. Складывается (как объяснено здесь ), что стойка, когда выполнено с rackup -D
команда (как демон) изменяет рабочий dir на /
.