1

サーバー上の PHP スクリプトがディレクトリを作成できない場合、これは通常、PHP が apache/nobody として実行されているためですか? このことから、サーバーの構成が間違っていると言えますか? (または標準構成を使用するだけ)

セキュリティ上の理由から、ユーザーとして php を実行した方がよいでしょう。また、実行した場合、この問題 (777 が必要) は引き続き発生しますか? 仕方ないとは思いますが質問させていただきます...

4

2 に答える 2

4

IMO 777 ディレクトリを持つべきではありません。ユーザーのいない Web サーバーではそれほど問題にはなりませんが、決して必要ではなく、とにかく避けるべきです。

Debian 上の PHP は、Apache と同じユーザーおよびグループ (www-data) として実行されます。そのため、ファイル アクセス制御を構成して、そのユーザーが好きなことをできるようにするだけです。777 は必要ありません。

他のディストリビューションにも同様の構成がありますが、いつでもapache2.confおよびphp.iniファイルを編集して、必要な結果を得ることができます。

于 2011-10-13T13:58:28.900 に答える
2

このことから、サーバーの構成が間違っていると言えますか?

いいえ、そうあるべきです。Apache によって実行される php スクリプトは、ユーザーとして実行されますwww-data(Ubuntu 上)。www-dataサーバー全体に対する書き込み権限は実質的にありません。そして、それが本来あるべき姿です。少しでも安全でない php スクリプト (コード インジェクションの影響を受けやすいなど) を作成し、root として実行すると、悪意のある訪問者がハード ドライブ全体を消去する可能性があります。

セキュリティ上の理由から、ユーザーとして php を実行した方がよいでしょうか?

ユーザーとは誰のことですか? ルートの場合は、上記を参照してください。root 権限を持つユーザーの場合は、上記を参照してください。

この問題 (777 が必要) は引き続き発生しますか?

問題は、外部ディレクトリに対する完全な読み取り、書き込み、および実行のアクセス許可を必要とするコードを使用していることです。

スクリプトでのみ使用されるディレクトリの場合は、それwww-dataを所有する必要があります。問題が解決しました。

重要なシステム領域にアクセスする必要がある php スクリプトを使用している場合は、これを行う方法を再考することをお勧めします。php スクリプトが実行するはずの多くのタスクは、スクリプトによってスケジュールされ、後で cron ジョブによって実行される可能性があります。

最後になりましたが、どうしても必要な場合は任意のユーザーとして php を実行できます。モジュールmpm_itk_moduleをインストールして追加するだけです

    AssignUserId user group

<VirtualHost>タグの内側。

ただし、前に述べたように、不適切なスクリプトと不適切な権限を使用すると、Very Bad Things (TM) が発生する可能性があることに注意してください。

于 2011-10-13T14:14:37.050 に答える