上传wordpress插件时出现混淆文件权限问题


Confusing file permissions issues when uploading wordpress plugins

我在AWS上使用自己的Ubuntu盒子。我有两个用户:medsyd(我的wordpress网站的所有者)和www data(apache作为其运行)。现在,为了让事情正常进行,我已经将两者添加到彼此的组中——因此www数据属于medsyd组,medsyd属于www数据组。

我正在努力让wordpress可以上传/安装插件,而无需要求FTP访问。我可以上传图片/媒体,但插件的行为似乎很奇怪,而且在获得文件权限的情况下,没有遵循我的预期。

以下是我尝试过的:

  1. medsyd:medsyd作为站点目录及其所有内容的所有者;775个目录、664个文件。Wordpress要求FTP。为什么?(www数据用户应该能够写入/读取正确的文件,因为它属于medsyd组)

  2. medsyd:www数据作为站点目录及其所有内容的所有者;775个目录、664个文件。Wordpress要求FTP。为什么?(www数据用户应该能够写入以读取/写入正确的文件,因为这些文件都属于www数据组)

  3. www数据:www数据作为网站目录及其所有内容的所有者;775个目录、664个文件。Wordpress不要求FTP。耶。但是www数据不应该拥有我所有的文件。

  4. www数据:www数据作为wp内容目录(及其所有内容)的所有者ONLY(由medsyd:medsyd拥有的wp内容之外的所有其他内容);775个目录、664个文件。Wordpress询问FTP。(为什么这与上面的例子不同,在上面的例子中,www数据也拥有wp内容目录之外的一切?)

wordpress在安装插件时使用什么逻辑来决定是否请求FTP?我似乎想不出有什么能与上面的4个例子相一致。

编辑:我知道还有其他方法可以解决这个问题,例如更改apache运行的用户,在wp-config中存储FTP凭据等,但不管怎样,我真的应该理解为什么我在上面使用的权限没有按预期运行。

最简单的方法是以"medsyd"用户的身份运行apache。其他方式需要更复杂的服务器配置。

打开文件/etc/apache2/envvars并更改以下行:

export APACHE_RUN_USER=medsyd
export APACHE_RUN_GROUP=medsyd

然后重新启动apache。服务容量2重新启动

更新

如果你有多个网站,并且想将它们分开,我建议你阅读mpm_itk。

我会尽力解释你为什么在775特权方面遇到麻烦。GROUP权限仅影响具有相同PRIMARY组的用户。其他群体并不重要。

例如,您有一个"www"目录,由medsyd:medsyd所有。权限为775。Apache将无法在那里写入,因为它的主要组是www数据。您应该将Apache UID/GID更改为www data:medsyd,我的意思是将其更改为PRIMARY组。

但无论如何,如果你想复杂地分离几个网站,这种方式不适合你,因为一个受损的网站可以访问所有其他网站。在这种情况下,mpm_itk会更好。