Задание Upstart не может создать каталог в / var / run

В следующей конфигурации в /etc/init/foo.conf в Ubuntu 12.04.4:

description "Foo"

start on filesystem or runlevel [2345]
stop on runlevel [!2345]

pre-start script
    mkdir -p -m 0775 /var/run/foo
    chown foo:foo /var/run/foo
end script

setuid foo
setgid foo
exec /usr/local/bin/foo

Однако, когда это выполняется при загрузке, и когда я пытаюсь запустить его вручную с помощью sudo start foo, я получаю следующее ошибка в /var/log/upstart/foo.log:

mkdir: cannot create directory `/var/run/foo': Permission denied

Почему это происходит и как я могу это исправить?

5
задан 26 July 2014 в 16:55

1 ответ

, Поскольку Новомодная поваренная книга упоминает: Примечание , что все процессы (предварительно запускаются, постостановитесь, и так далее) будет выполнен, поскольку пользователь указал.

В результате mkdir корневой каталог внешнего пользователя перестанет работать с отклоненными результатами разрешения.

Одно решение состоит в том, чтобы создать как корень каталог, chown это для целевого пользователя и затем выполнить исполняемый файл как пользователя.

description "Foo"

start on filesystem or runlevel [2345]
stop on runlevel [!2345]

pre-start script
    mkdir -p -m 0775 /var/run/foo
    chown foo:foo /var/run/foo
end script

exec sudo -u foo_user /usr/local/bin/foo

, где foo_user целевой пользователь, который будет инициировать исполняемый файл

Ссылка о том, как работать как другой пользователь

4
ответ дан 26 July 2014 в 16:55

Другие вопросы по тегам:

Похожие вопросы: