Apache 和文件系统权限

Apache 和文件系统权限

我对此感到很苦恼。让我们假设以下内容:

名为“deploy”的用户在其主目录中有一个名为 example.com 的目录。其中有许多文件,其权限设置如下:

drwxrwxrwx 6 部署 部署 4096 2010-02-10 21:06 example.com

还有一个全新安装的 apache 2,以 www-data:www-data 形式运行。

我需要这些文件仍然由 deploy:deploy 拥有,但我需要 apache 能够写入这些文件。

难道不应该将 www-data 添加到部署组或反之亦然,以允许 apache 写入 example.com 目录吗?

我的 /etc/groups 文件显示(为简洁起见,已截断):

www-数据:x:33:部署
部署:x:1000:www-数据

但 www-data 用户无法写入目录。这让我抓狂了!帮忙?

答案1

我认为 www-data 用户至少需要对父目录具有读取和执行权限,如果不是整个目录路径的话。如果用户的主目录被限制为 700(drwx------),那么这也会阻止子目录中的组写入。当然,更改主目录可能会产生其他影响(例如对于 ssh),因此您最好将用户的 example.com 目录放在 Apachehtdocs区域下 - 这可能会扭转问题,尽管您已经设置了组。

答案2

递归地将 www-data 分配给内容的所有者,而不仅仅是顶级文件夹。应该可以

答案3

要测试您的设置,您可以使用

$ sudo -- su -c "ls -l /home/deploy/example.com" www-data

甚至

$ sudo -- su -c "touch /home/deploy/example.com/dummy" www-data

看看您是否可以将该目录作为 www-data 写入。

相关内容