Ошибка разрешения выгрузки Ubuntu при записи в систему для входа в систему без прав администратора

У меня есть простой сценарий выскочки:

start on started network-services

respawn
respawn limit 100 5

setuid www-data

exec node /var/testapp/app.js >> /var/log/testapp.log 2>&1

post-start exec echo "Server was (re)started on $(date)" | mail -s "Crashing Server (re)starting" admin@sample-test.com

но поскольку я запускаю приложение узла как "www-data", у меня нет прав на запись в testapp.log,

Каков наилучший подход к решению этой проблемы?

Я бы предпочел не создавать файл журнала с "www-данными" в качестве владельца, потому что я хотел бы выполнить как можно меньше шагов для установки. Я бы также предпочел не запускать приложение как "www-data" с помощью sudo:

exec sudo -u www-data node /var/testapp/app.js >> /var/log/testapp.log 2>&1

потому что, когда я делаю это, root также запускает процесс. Может быть, я ошибаюсь, но я вижу это как проблему безопасности. Если это не проблема безопасности - пожалуйста, просветите меня.

1 ответ

Решение

Вы можете просто создать другую директорию в журнале dir и предоставить право владения www-данными:

sudo mkdir /var/log/testapp
sudo chown www-data:www-data /var/log/testapp

/var/log/testapp теперь доступно для записи по www-данным, поэтому в сценарии upstart вы должны иметь:

exec node /var/testapp/app.js >> /var/log/testapp/app.log 2>&1
Другие вопросы по тегам