web-dev-qa-db-ja.com

Apacheが単一のプロセスをrootとして実行し、別のプロセスをrootおよびwwwdataユーザーとして実行し始めたのはなぜですか?

Apache Worker-MPM、PHP 5.3.2、およびFCGIDを実行しています。

Apacheは以前よりも優れた動作をしますが、ルートとして実行されているApacheプロセスと、ルートおよびwwwdataの両方として実行されている2番目のプロセスがあることに気付きました。残りのプロセスはwwwdataとして実行されています。

誰もまだこれに遭遇していますか、それは安全ですか?

7
flink

Apache Httpdは、rootによって実行されるプロセスとして開始し、1024未満のポート(HTTPの場合は80、HTTPSの場合は443)をリッスンできるようにします。通常のユーザーはそれができません。

さらに、一部の構成ファイルは、起動プロセス中にルートのみが読み取り可能です。たとえば、SSLを設定している場合、Apacheユーザー(例:www-data)は秘密鍵ファイルを読み取ることができる必要はありません。

すべてをルートとして実行しないのは良いことです。この方法では、ミスやサービスの侵害は、ルートとして実行する場合ほどシステムに大きな損害を与えることができません。

編集:

(私はwwwdataの代わりにwww-dataと仮定しましたが、問題ではありません。実行するように設定したユーザーとして実行されます。)

どちらのログセットも異常なものを提供しません。私はそれがどのように実行されているのか見当がつかない。

この方法で実行するだけです。プロセスをルートとして開始し、選択したユーザーとして他のユーザーをフォークします。

ルートプロセスIDを取得する場合(たとえば、ディストリビューションに応じてps auwx | grep Apache2またはgrep httpdを使用)、pstree -p -u THE_PROCESS_IDを実行すると、階層が明確に表示されます。親プロセスは常に永続的に実行されている必要があります(そうでなければ、子プロセスも強制終了します)。

Userのドキュメント(Apache MPM Common Directives) を参照してください。

サーバーをルートとして起動した場合、親プロセスがルートとして実行し続けるのは正常です。

8
Bruno