5

root として実行されている Node.JS プログラムが、実行中にその権限をダウングレードすることは可能ですか? これは最初に行うことの 1 つであり、その目的はもちろん、このプロセスで実行される脆弱性や信頼できないコードが存在する可能性が低い場合に、発生する可能性のある損害を制限することです。

または、ルートとして実行されている Node.JS プロセスがルート以外の別のプロセスを開始する方法はありますか? (できればsudoなどの間にレイヤーを追加しないでください)

4

3 に答える 3

4

process.setuid (および同様に process.setgid) を試してください。

于 2012-11-06T21:49:15.403 に答える
2

はい、process.setuid(id)process.setguid(id)を使用して、現在のプロセスの有効なユーザー/グループ ID を変更します。

于 2012-11-06T21:51:33.647 に答える
0

@mabako の答えは素晴らしいように見えますが、より簡単なオペレーティング システムのトリックがあるはずです。

人々がノードで多くのことをしているのを私が見たのは、

  1. ノード コードを実行するユーザーをwww-dataグループに追加して、特権ポートにバインドできるようにします。

    例: http://kvz.io/blog/2009/12/15/run-nodejs-as-a-service-on-ubuntu-karmic/

  2. iptables を使用して、特権ポートを特権のないノード プログラムにリダイレクトします。ノード プログラムは高いポートでリッスンします。

    iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000

ノード サーバーをルートとして実行するポート バインディング以外の理由はありますか?

編集:ここにさらにトリックがあります:非ルートプロセスがLinuxの「特権」ポートにバインドする方法はありますか?

于 2012-11-06T21:56:57.013 に答える