web-dev-qa-db-ja.com

管理者以外のユーザーにログオンするために書き込むときにubuntuupstart権限エラー

私は簡単なupstartスクリプトを持っています:

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" [email protected]

ただし、ノードアプリを「www-data」として実行しているため、testapp.logに対する書き込み権限がありません。

これに対処するための最良のアプローチは何ですか?

セットアップの手順をできるだけ少なくしたいので、所有者として「www-data」を使用してログファイルを事前に作成したくありません。また、Sudoで「www-data」としてアプリを実行したくありません。

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

そうすると、rootもプロセスを実行しているからです。私は間違っているかもしれませんが、それはセキュリティの問題だと思います。セキュリティの問題ではない場合は、教えてください。

4
gmadar

ログディレクトリに別のディレクトリを作成し、www-dataの所有権を与えることができます。

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

/var/log/testappはwww-dataで書き込み可能になっているため、upstartスクリプトでは次のようになります。

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