2016-05-05 75 views
0

我在自己的AWS上的Ubuntu框。我有两个用户:medsyd(我的WordPress站点的所有者)和www-data(Apache运行的)。现在,为了努力工作,我已经将两者都添加到彼此的组中 - 因此www数据属于medsyd组,medsyd属于www数据组。上传WordPress插件时混淆文件权限问题

我试图让wordpress可以上传/安装插件而不要求FTP访问。我可以上传图片/媒体 - 但插件似乎表现得很奇怪,而且没有遵循我期望的文件许可权。

这是我已经试过:

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

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

  3. www-data:www-data作为站点目录的所有者和所有的内容; 775个目录,664个文件。 WordPress的不要求FTP。好极了。但www数据不应该拥有我所有的文件。作为wp-content目录(及其所有内容)所有者的www数据:www数据(仅包含由medsyd:medsyd拥有的wp-content之外的所有内容);以及其他数据。 775个目录,664个文件。 WordPress的ASKS的FTP。 (为什么这个来自例如正上方不同,其工作,其中WWW的数据拥有的wp-content目录藏汉之外的一切吗?)

什么逻辑不WordPress的使用,以决定是否要问FTP当安装插件?我似乎无法想象任何与上述4个例子相一致的东西。

编辑:据我所知,还有其他方法可以解决这个问题 - 例如更改用户apache运行方式,在wp-config等中存储FTP凭据,但无论如何,我真的要理解为什么我上面使用的权限不是'行为如预期。

回答

1

最简单的方法是将apache作为“medsyd”用户运行。其他方式需要更复杂的服务器配置。

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

export APACHE_RUN_USER=medsyd 
export APACHE_RUN_GROUP=medsyd 

然后重新启动Apache。服务的Apache2重启

更新

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

我会试着解释为什么你有775个特权的麻烦。 GROUP特权仅影响具有相同PRIMARY组的用户。其他团体并不重要。

例如,您有“www”目录,由medsyd:medsyd拥有。权限是775.Apache将无法在那里编写,因为它的主要组是www-data。您应该将Apache UID/GID更改为www-data:medsyd,我的意思是将其更改为PRIMARY组。

但无论如何,如果您想要将多个网站分开,这种方式不适合您,因为一个受损的网站可以访问所有其他网站。在这种情况下,mpm_itk会更好。

+0

我知道还有一些其他解决方案。我实际上有多个网站在不同的用户下运行,所以这不会逐字地运行。我知道有办法让您的解决方案也适用于多个用户/网站。但无论如何,我真的很想明白为什么上面的文件权限不起作用。 –

+0

我的评论太长了,请阅读答案中的“更新” – Serge