web-dev-qa-db-ja.com

誰もいないように設定されていても、ルートとしてメインのApache pid?

サーバーを構築したときにすべてが正しくセットアップされたと思います(おそらく、VPS Host Linodeがセットアップを提供したのは事前構成されたLAMPでした)

すべてのApacheプロセスは、構成で意図したユーザーnobodyの下で実行されているようですが、低いPID(最も長く実行されているApacheプロセス)はまだrootの下で実行されており、私のPHPスクリプトは報告しているようです。 phpinfo()で尋ねることにより、rootとしての現在のユーザー。

これは、ルートがApacheを生成している可能性があり、その子がその構成に従って定義されたnobodyユーザーの下で正しく生成されているためですか?実際のページのいずれかがそのルートApacheプロセスを介して処理されますか、それとも親が存在するだけですか?

私は少し心配していますが、構成上の問題より少し多い場合は、これを修正するために新しい心で新しいApacheを起動しても問題ありません。

マイナーな追加情報の編集:$ _ SERVER ['Apache_run_user'](それに類似)がwww-dataを表示しているにもかかわらず(誰もいない場合でも)$ _ SERVER ['user']がルートであるように見えます。これがPHPのせいであるかどうかはわかりません。 PHPでルートファイルを編集してみてください。

編集2:いいえ、PHPはルートファイルを編集できません。 $ _SERVER ['user'](およびハッキーな監査スクリプト)は、PHPがルートであると想定するのは間違っていると思います。しかし、まだApacheプロセスについて疑問に思っています。

2
Alexander

これは、ルートがApacheを生成している可能性があり、その子がその構成に従って定義されたnobodyユーザーの下で正しく生成されているためですか?

はい。

実際のページのいずれかがそのルートApacheプロセスを介して処理されますか、それとも親が存在するだけですか?

いいえ、ルートプロセスで処理されるページはありません。はい、親が存在するだけです。以下の理由により、そのようにする必要があります。

Apacheは、特権ポート(つまり、1023までの小さな番号のポート)(ほとんどが80または443)にバインドします。特権ポートにバインドするには、rootである必要があります。そのため、これらは「特権ポート」と呼ばれます。

メインのsshdプロセスを確認すると、そのプロセスもrootとして実行されていることがわかります。次に、sshを介して接続します。オッズは、メインプロセスから分岐した個人のsshdプロセスが、独自の非特権アカウントで実行されていることです。

4
wzzrd