设置 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 或没有人是不安全的。设置 root:root 时不容易破解 /var/www/html。Debian 很晚才在 /var/www/html 上使用 root:root。