我对此感到很苦恼。让我们假设以下内容:
名为“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 写入。