我已经在Amazon EC2 Ubuntu 12.04 TLS实例上设置了这个新贵脚本来执行node.js应用程序。 该脚本使用setuid和setgid。
它工作正常,而不使用setuid和setgid但是当我使用它们,如果失败,因为进程无法写入/var/log/myapp.log(这是我想用于logging的path)由于权限被拒绝的错误。
/proc/self/fd/9: 13: /proc/self/fd/9: cannot create /var/log/noommi.log: Permission denied
我使用默认用户“ubuntu”来执行脚本,这是我login到本机的同一个用户(我知道这对用户其他用户会更好)因为我看到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?
从exec中删除> /var/log/myapp.log 2>&1
新贵会login到文件: /var/log/upstart/myapp.log (owner:root)