nginxがrootとしてプロセスを開始するのはなぜですか?

nginxがrootとしてプロセスを開始するのはなぜですか?

nginxサーバーをインストールしました。ちょうど受信ポートを確認し、以下を確認しました。

$ sudo lsof -nP -i | grep LISTEN
sshd       614     root    3u  IPv4   7712      0t0  TCP *:22 (LISTEN)
nginx      822     root    7u  IPv4   8745      0t0  TCP *:80 (LISTEN)
nginx      827 www-data    7u  IPv4   8745      0t0  TCP *:80 (LISTEN)
nginx      828 www-data    7u  IPv4   8745      0t0  TCP *:80 (LISTEN)
nginx      829 www-data    7u  IPv4   8745      0t0  TCP *:80 (LISTEN)
nginx      830 www-data    7u  IPv4   8745      0t0  TCP *:80 (LISTEN)
.
.
.

「www-data」ユーザーとして4つのnginxプロセスが実行され、「rootユーザー」として1つが実行される理由が気になります。

ベストアンサー1

目立つプロセスは、他のすべてのnginxプロセスを開始する基本プロセスです。このプロセスは、nginxを起動するinitスクリプトによって開始されます。プロセスがrootとして実行されるのは、単にrootとして起動したからです。他のユーザーとして起動できますが、そのユーザーがnginxに必要なすべてのリソースにアクセスできることを確認する必要があります。通常、少なくとも/var/log/nginxと/var/run/の下のpidファイルです。

最も重要なのは、ルートプロセスだけが1024未満のポートを受信できることです。 Webサーバーは通常、ポート80および/または443で実行されます。これは root で開始する必要があることを意味します。

要約すると、ルートが実行するマスタープロセスは完全に正常であり、ほとんどの場合通常の動作に必要です。

編集:何でもrootとして実行すると、暗黙のセキュリティリスクが発生します。通常、これらのソフトウェア開発者は攻撃ベクトルについて多くのことを知っており、ルートの実行をできるだけ少なくするように細心の注意を払っています。結局、ソフトウェアの品質が良いことを信頼できます。

それでも不安なら、他のユーザーとしてnginxを実行し、1024未満のポートを使い続ける方法があります。 iptables を使用して、ポート 80 からのすべての着信トラフィックを 8080 などの他のポートにリダイレクトし、nginx がそのポートでリッスンできるようにします。

おすすめ記事