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

Mus*_*ful 2 permissions debian web apache-httpd

在设置 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

jay*_*ren 6

PHP 脚本将作为以下任一方式运行:

  • 运行 Apache 的用户由UserApache 配置中的指令(通常为apachenobody)确定,如果您使用mod_php
  • 如果您使用的是运行 PHP-FPM 的用户 php-fpm

因此,用户执行的 PHP 脚本会有所不同。因此,您可以相应地设置所有者和组/var/www/html(或您DocumentRoot所在的任何地方)。

此外,您可能根本不希望您的 PHP 应用程序能够写入(或覆盖)您的文件DocumentRoot,因为这可能允许访问受感染或不安全的 PHP Web 应用程序的访问者获得远程代码执行权限。因此,您有责任决定您的 PHP 应用程序是否足够值得信赖,以允许它写入 Apache 可以通过 Web 提供服务甚至执行的文件。

出于与上述类似的原因,PHP 几乎永远不会(也不应该!)以 root 身份运行。

  • 这应该作为一个单独的问题发布,但我可以在这里快速回答。`sudo service apache2 restart` **不会** 导致 Apache 以 root 用户身份运行。Apache 运行的用户由 Apache 配置中的“用户”指令确定。 (3认同)