Я настроил этот новомодный сценарий на Ubuntu 12.04 Amazon Ec2 экземпляр TLS для выполнения 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
Я использую пользователя по умолчанию "человечность" для выполнения сценария, который является тем же пользователем, я вхожу в систему машины (я знаю, что это было бы лучше пользователю другой пользователь), Поскольку я вижу, что пользователь человечности принадлежит adm группе, которая является группой, включенной в/var/log. Путем выполнения ls -la
(использование пользователя "человечности"), это - результат для var/журнала:
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?
удалите > /var/log/myapp.log 2>&1
из исполняемого
upstart будет записан в файл: /var/log/upstart/myapp.log
(owner:root)