Ошибка разрешения выгрузки 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