为什么 /var/www/html 只能由 root 写入(默认情况下)?

为什么 /var/www/html 只能由 root 写入(默认情况下)?

设置 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,则由UserApache 配置中的指令(通常apache或)确定运行 Apache 的用户nobodymod_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。

相关内容