Dan*_*bbs 5 permissions upstart
我/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
Run Code Online (Sandbox Code Playgroud)
但是,当它在启动时运行时,并且当我尝试手动运行它时,sudo start foo我在 中收到以下错误/var/log/upstart/foo.log:
mkdir: cannot create directory `/var/run/foo': Permission denied
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况,我该如何解决?
正如 Upstart 食谱中提到的: 请注意,所有进程(启动前、停止后等)都将按照用户指定的方式运行。
因此,mkdir外部用户的主目录将失败,并出现权限被拒绝的结果。
一种解决方案是以 root 身份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
Run Code Online (Sandbox Code Playgroud)
foo_user将启动可执行文件的目标用户在哪里
| 归档时间: |
|
| 查看次数: |
5608 次 |
| 最近记录: |