Amazon EC2 Ubuntu и выгрузка прав доступа
Я настроил этот сценарий запуска на экземпляре TLS на Amazon Ec2 Ubuntu 12.04 для выполнения приложения 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
от exec
upstart войдет в файл: /var/log/upstart/myapp.log
(Владелец: корень)