apache
wordpress 以用户身份运行apache
在developers
群组中- 所有文件夹都是
775
- 所有文件都是
664
- 所有文件夹和文件都在
developers
组中
为什么apache
需要拥有这些文件才能让 WordPress 安装/更新插件?
答案1
首先,root
启动 Apache 服务器。 Apacheroot
在启动时放弃权限,并且将拥有有限的用户权限apache
。
因此,当您上传文件时,Apache无法写入WordPress插件文件夹,插件安装失败。您可以通过两种方式解决这个问题。
- 向某个组授予对插件文件夹的写入权限,并使
apache
用户成为该组的成员。 - 或者,使该文件夹归
apache
用户所有
注意umask
设置。您需要在设置 apache 环境变量的地方进行设置。
"umask 002"
这umask
将对安装插件时创建的新文件和目录的权限产生影响。
答案2
为什么 apache 需要拥有这些文件才能让 WordPress 安装/更新插件?
因为你的权限模型很糟糕。
决定对哪些文件设置哪些权限与编写代码和配置网络服务器一样重要,是部署网站的一部分。显然,此处的安装经过精心设计,允许通过网络应用代码更新。该问题有 2 个常见的解决方案 - 使文件和目录可供每个人写入以及使文件/目录由您的网络服务器 uid 拥有。两者都对安全非常不利。
在使用大量应用程序时,不可避免地需要一些 Web 服务器 uid 可以写入的指定区域 - 这些区域应该位于文档根目录之外,并且禁止在这些目录中执行所有代码。
凭借您拥有的权限,Apache 可以通过任何用户/组/其他读取所有文件/目录,并以用户或组身份写入。所以这里有一些冗余,Apache 不需要将文件写入它们 - 但这不是问题。 Apache 可以写入任何代码(或配置)文件是一个问题。
正确问题的正确解决方案需要付出一些努力。
答案3
因为当您上传和更新文件时,Apache 正在“apache”用户下运行,并且它需要具有更改文件的权限。
最有可能的是,出于安全原因,更简单的方法是让 apache 仅成为插件目录的所有者,而不是所有 Web 根目录的所有者。
你可以看一下这里有关文件权限的更多建议。