%20%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%81%BF%E5%8F%AF%E8%83%BD%E3%81%AA%E3%81%AE%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%3F.png)
LAMP (Debian 上) をセットアップした後、/var/www/html の権限を確認したところ、root ( ) のみが書き込み可能であることに驚きましたdrwxr-xr-x 1 root root
。
おそらく PHP スクリプトは /var/www/html にファイルを作成できますが、PHP スクリプト (またはそのインタープリター) が root 名で実行されることはないはずです。私が誤解している点があれば、どなたか教えていただけませんか?
編集:
PHPをインストールしましたapt-get install php5-common libapache2-mod-php5 php5-mysql php5-cli
答え1
PHP スクリプトは次のいずれかとして実行されます。
- Apacheを実行しているユーザー(
User
Apache設定のディレクティブ(通常はapache
またはnobody
)で決定)mod_php
- PHP-FPMを実行しているユーザー(使用している場合)
php-fpm
/var/www/html
したがって、PHP スクリプトが実行されるユーザーは異なります。したがって、それに応じて(またはどこにいるかに関係なくDocumentRoot
)の所有者とグループを設定するのはあなた次第です。
さらに、PHP アプリケーションが Web 内のファイルを書き込む (または上書きする) 権限をまったく持たないようにしたい場合もあります。DocumentRoot
そうしないと、侵害された、または安全でない PHP Web アプリケーションへの訪問者がリモート コード実行権限を取得できる可能性があります。したがって、Apache が Web 経由で提供したり実行したりできるファイルに PHP アプリケーションが書き込むことができるほど信頼できるかどうかを判断するのは、ユーザーの責任です。
上記と同様の理由により、PHP は root として実行されることはほとんどありません (また、実行すべきではありません)。
答え2
Centos/RHEL はすでに /var/www/html に root:root を使用していました。これはセキュリティの問題です。apache や nobody は安全ではありませんでした。root:root を設定した場合、/var/www/html をハッキングするのは簡単ではありません。Debian は /var/www/html で root:root を使用するのが遅れました。