Назад | Перейти на главную страницу

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?

удалять > /var/log/myapp.log 2>&1 от exec

выскочка войдет в файл: /var/log/upstart/myapp.log (владелец: root)