
設定 LAMP(在 Debian 上)並查看 /var/www/html 的權限後,我驚訝地發現它只能由 root ( drwxr-xr-x 1 root root
) 寫入。
據推測,PHP 腳本可以在 /var/www/html 中建立文件,但 PHP 腳本(或其解釋器)肯定不會以 root 的名義運行?誰能幫助我理解我的誤解?
編輯:
我安裝了 PHPapt-get install php5-common libapache2-mod-php5 php5-mysql php5-cli
答案1
PHP 腳本將會運行為:
- 如果您使用的是 Apache,則由
User
Apache 配置中的指令(通常apache
或)決定執行 Apache 的用戶nobody
mod_php
- 運行 PHP-FPM 的用戶(如果您正在使用)
php-fpm
因此,PHP 腳本執行的使用者會有所不同。因此,您可以相應地設定所有者和群組/var/www/html
(或您DocumentRoot
所在的位置)。
此外,您可能根本不希望您的 PHP 應用程式能夠寫入(或覆蓋)您的文件DocumentRoot
,因為這可能會讓存取受損或不安全的 PHP Web 應用程式的訪客獲得遠端程式碼執行權限。因此,您有責任決定您的 PHP 應用程式是否足夠值得信賴,以允許其寫入 Apache 可以透過網路提供服務甚至執行的檔案。
PHP 幾乎永遠不會(也不應該!)以 root 身份運行,原因與上面提到的類似。
答案2
Centos/RHEL已經使用root:root作為/var/www/html。 apache 或沒有人是不安全的。