Node.jsを非特権ユーザー(dmitry
この場合)として実行しようとしています。誰かが確認できるか、必要に応じて、以下に表示されている内容を詳しく説明してください。
Ubuntu 12.04とupstartを使用して、次を呼び出すジョブスクリプトを作成しました。
exec sudo -u dmitry /usr/bin/node /home/dmitry/node/linkskeeper/app.js >> /var/log/linkskeeper.sys.log 2>&1
このステートメントは、というファイルに存在し/etc/init/linkskeeper.conf
、私は呼び出します
$ sudo service linkskeeper start
これが生成するプロセスを調べると、次のことがわかります。
$ ps aux | grep node
root 28349 0.0 0.2 40908 1672 ? Ss 16:51 0:00 sudo -u dmitry /usr/bin/node /home/dmitry/node/linkskeeper/app.js
dmitry 28350 2.1 2.1 641784 13268 ? Sl 16:51 0:00 /usr/bin/node /home/dmitry/node/linkskeeper/app.js
最初のexec
呼び出しではpid 28349
がrootとして生成さ28350
れ、次に特権のないアカウントで生成されるようです。これが正しい物語である場合、それは私にとって理にかなっています。興味深いことに、以下の参考文献[1]では、これはEC2では機能しないはずですが、うまく機能しているようです。
次に、exec
コマンドを次のように調整します。
exec su - dmitry -c '/usr/bin/node /home/dmitry/node/linkskeeper/app.js 2>&1 >> /home/dmitry/app.log'
私は次を取得します:
$ ps aux | grep node
dmitry 28371 0.0 0.2 37952 1312 ? Ss 16:57 0:00 su - dmitry -c /usr/bin/node /home/dmitry/node/linkskeeper/app.js 2>&1 >> /home/dmitry/app.log
dmitry 28372 0.0 0.2 19516 1712 ? S 16:57 0:00 -su -c /usr/bin/node /home/dmitry/node/linkskeeper/app.js 2>&1 >> /home/dmitry/app.log
dmitry 28375 3.2 2.6 639748 15916 ? Sl 16:57 0:00 /usr/bin/node /home/dmitry/node/linkskeeper/app.js
私はPIDをして、ここで何が起こっているか理解していない28371
、28372
と28375
。それらはすべてに所有されており、ダッシュで始まるにdmitry
リストされているコマンドがわかりません28372
。
Node.jsアプリは両方の呼び出しで正常に動作するように見えることに注意してください。
参照:[1] https://stackoverflow.com/questions/8312171/can-i-run-node-js-with-low-privileges
-
)をドロップし、新しいログインシェルを呼び出さないと、上記のsu
プロセスに示されているコマンドがに変わります。これは、まったく理解できない構文よりも理にかなっています。28372
bash -c /usr/bin/node /home/dmitry/node/linkskeeper/app.js 2>&1 >> /home/dmitry/app.log
-su -c