0

MacにXAMPがインストールされており、コマンドを実行してみました-apache ps axo user,group,comm | grep httpdがどのユーザーとして実行されているかを知るために。複数の結果が得られます。1 つは root で、もう 1 つは nobody です。では、apache は何として実行されているのでしょうか。root または nobody と、なぜ root と nobody の両方を取得するのですか? httpd が root で起動してから nobody になったからでしょうか?

私が得た結果ps axo user,group,comm | grep httpdは -

root 20 /Applications/XAMPP/xamppfiles/bin/httpd
誰も -1 /Applications/XAMPP/xamppfiles/bin/httpd
誰も -1 /Applications/XAMPP/xamppfiles/bin/httpd
誰も -1 /Applications/XAMPP/xamppfiles/bin/httpd
誰も -1 /Applications/XAMPP/xamppfiles/bin/httpd
誰も -1 /Applications/XAMPP/xamppfiles/bin/httpd
誰も -1 /Applications/XAMPP/xamppfiles/bin/httpd
誰も -1 /Applications/XAMPP/xamppfiles/bin/httpd
誰も -1 /Applications/XAMPP/xamppfiles/bin/httpd
誰も -1 /Applications/XAMPP/xamppfiles/bin/httpd
誰も -1 /Applications/XAMPP/xamppfiles/bin/httpd
誰も -1 /Applications/XAMPP/xamppfiles/bin/httpd

第二に、次のスクリプトを実行すると - echo shell_exec('whoami');( https://stackoverflow.com/questions/2509334/finding-out-what-user-apache-is-running-asから) -nobody

私がユーザーを知りたい理由は、php エンジンが Web サーバーのルート ディレクトリの外にある php ファイル (mysql_details.php) を実際に実行できるためです。そして、この mysql_details.php には次のパーミッションがありますrwxr--r--。つまり、other と group のパーミッションを読み取るだけです。したがって、Apache ユーザーが無人である場合、どうすれば mysql_details.php を実行できますか。

ありがとう、プラット。

4

1 に答える 1

1

メインの Apache プロセスは root として実行され、他のプロセスは nobody として実行されます。リクエストを処理するプロセスは、nobody として実行されるプロセスだけです。そのため、誰もアクセスできないファイルに誰かがアクセスしようとすると、エラーが発生します (一方、root はファイルにアクセスできます)。

ファイルを実行する必要がある場合は、いくつかのことを実行できます。

  1. 誰にもファイルを所有させないでください。これにより、ファイルへの完全な読み取り/書き込み/実行アクセス権が誰にも与えられず、他のユーザーがファイルを書き込んだり実行したりできなくなります。
  2. グループに nobody を追加し、そのグループにファイルの実行アクセス権を付与します。グループ内の誰でもファイルを実行できますが、ファイルに書き込むことができるのは所有者だけです (誰もいないわけではありません)。
  3. 誰でもファイルを実行できるようにします。どのユーザーもさまざまなアクセス許可レベルでコンテンツを実行できるため、これはおそらく良い考えではありません。上記の2つのどちらかを使用するのがおそらく最善でしょう。
于 2012-06-30T20:56:35.783 に答える