我已经在 Amazon Ec2 Ubuntu 12.04 TLS 实例上设置了这个 upstart 脚本,用于执行 node.js 应用程序。该脚本使用 setuid 和 setgid。
它在不使用和的情况下工作正常setuid
,setgid
但是当我使用它们时,如果失败,因为由于权限被拒绝错误,该过程无法写入/var/log/myapp.log(这是我想要用于日志记录的路径)。
/proc/self/fd/9: 13: /proc/self/fd/9: cannot create /var/log/noommi.log: Permission denied
我使用默认用户“ubuntu”来执行脚本,该用户与我登录机器时使用的用户相同(我知道最好使用其他用户)。我看到 ubuntu 用户属于 adm 组,该组包含在 /var/log 中。通过执行ls -la
(使用“ubuntu”用户),这是 var/log 的结果:
drwxr-xr-x 11 root root 4096 Oct 15 12:05 .
drwxr-xr-x 12 root root 4096 Oct 12 21:44 ..
这是脚本 /etc/init/myapp.conf 的内容:
description "start and stop myapp"
version "1.0"
author "Me!"
start on filesystem and started networking
respawn
env HOME=/home/ubuntu/myapp
#Run the script using ubuntu user instead of root.
setuid ubuntu
setgid ubuntu
script
export HOME=$HOME
chdir $HOME
env PATH=/usr/local/bin:/usr/bin:/bin
env NODE_ENV=development
exec /usr/bin/node server.js > /var/log/myapp.log 2>&1
end script
我应该怎么做才能让脚本将日志写入 /var/log?
答案1
> /var/log/myapp.log 2>&1
从执行中删除
upstart 将记录到文件:(/var/log/upstart/myapp.log
所有者:root)