Apache - 允许访问用户主目录

Apache - 允许访问用户主目录

我已经被这个问题困扰了一个星期,浏览了各种网站,但似乎就是无法让它发挥作用。

我安装了 Apache2 和一个 Wordpress 网站,位于用户文件夹中/home/<user>/www

现在网站一切正常,但是从 Web 界面安装插件(以及任何其他需要写权限的操作 - 更改设置、上传媒体等)将无法工作,因为 wordpress(更像 apache)没有对这些文件的写权限。

目录/home/<user>/www及其下的所有内容均属于用户和组<user>

我已经尝试了多种解决方案,但都不起作用,其中包括:

  1. /home<user>/www将的所有者更改为www-data:www-data。好吧 - 老实说,我没有尝试这个解决方案,因为我不想要它。如果您对服务器上的所有用户执行此操作,他们将获得所有文件夹的访问权限,但他们只能访问他们的主文件夹,而不能访问其他文件夹。

  2. 添加www-data到用户组。我认为这可能有效,但显然不行。www-data用户确实在用户组中(使用 id 命令检查),但似乎仍然不起作用。

  3. 在用户的主目录上设置 ACL。也这样做了,并授予了www-data对主目录的 rwx 访问权限,但这仍然没有帮助。

如果你有兴趣,该/home/<user>/目录和其下的所有文件/目录都具有 775 权限。

答案1

好吧,经过不断的努力,我终于找到了一个适合我的解决方案。

这是我所做的: 假设我创建了一个名为 的新用户dummy,他的主文件夹位于 ,/home/dummy还有一个专用于他的网络演示的文件夹位于/home/dummy/www

  1. 用于将目录sudo chgrp -R www-data /home/dummy/www的组www及其所有内容更改为www-data(Apache 的 Web 访问默认用户)。
  2. 用于sudo chmod -R g+wrxs /home/dummy/www授予组www-data对指定目录及其内容的写入、读取和执行权限。重要的这里的事情是s部分。这确保组 ( www-data) 接管使用 s 参数在目录内创建的任何文件的所有权。

dummy根本不需要将用户添加到任何组。

如果将来有人遇到与我同样的问题,希望这能有所帮助。

编辑:经过一些额外的测试,仅凭这一点似乎还不够。除了上面提到的两个步骤之外,您还需要通过添加到define('FS_METHOD', 'direct');wordpress 配置文件中来明确告诉 wordpress 如何处理文件。

此外,如需更严格的权限设置,请参阅 DigitalOcean 的如何在 Ubuntu 上使用 LAMP 安装 WordPress指导。

相关内容