给Apache权限写入/home/*/www/目录。

LAMP服务器新手在此:
我有一个网络服务器(在我完全拥有根访问权限的VPS上),我正在为其中的几个用户设置网站。
我已经安装了apache2和php,并且我已经在/etc/apache2/sites-enables目录下手动指定了一些站点(按照正常情况从sites-available创建符号链接)。
实际上,我并不使用/var/www/目录,而是选择以下这种设置方式:
/home/user1/www/websiteone.com/
/home/user1/www/subdomain.websiteone.com/
/home/user1/www/differentwebsiteone.com/
/home/user2/www/websitetwo.com/
/home/user3/www/websitethree.com/

等等,等等,等等。希望你能明白我的意思。
不过我有两个问题:
1. Apache无法写入这些目录。是否有一个简单、清晰的解释,告诉我如何让所有/home/*/www/目录(包括子目录)都可以被www-data用户写入,而不给予user1对user2等其他用户的写入权限?最好是一个简单的步骤,可以追溯地适用于所有未来的用户,但如果不可能的话,我也不介意手动设置。
2. 其次:在某些情况下,我希望比如说user2可以访问user1家目录中differentwebsiteone.com的文件,但不允许他们访问其他任何东西(所以,某种符号链接出现在/home/user2/www/differentwebsiteone.com)。我可以轻松实现这个吗?也许将网站文件移动到/var/www/并创建相应的符号链接到各自的家目录?或者其他方法?非常感谢您的建议!
谢谢!
1个回答

Apache在所有站点上以单个用户身份运行,因此如果您允许其访问/home/user1/www并进行写操作,user2也将能够编写可以写入/home/user1/www的PHP脚本。您需要以非常规的方式运行PHP才能实现用户分离。
这里有一篇关于各种方法优点的很好的文章。

http://boomshadow.net/tech/php-handlers/

我个人喜欢fastcgi,但如果你不需要性能,suPHP可能是你想要的。
另一个有趣的新选择是LXC容器,在10.04版本中并没有提到,但自那时以来已经成熟了很多。这允许您在VPS内创建一个看起来像另一个服务器的东西,但它并不是虚拟化的...它只是包含在自己的进程空间中。

啊,我不知道FastCGI能够以脚本所有者的身份运行脚本!我一点也不喜欢suPHP的样子,所以很高兴有一个好的替代方案! - TC Fox