如何让Apache访问/ home / * / www /?

我的apache服务器当前正在用户“www-data”下运行。 但是,该用户没有访问/ home / username / www的权限。 为Apache提供正确的权限以便它可以访问所有/ home / * / www目录的最佳方式是什么? 有没有办法为Apache设置一个不同的用户,取决于它所服务的文档根目录?

这样做的典型方法是将这些目录的组更改为www-data,并允许可执行文件访问组:
chgrp www-data /home/*
chmod g+x /home/*
chgrp -R www-data /home/*/www
chmod -R g+x /home/*/www

这假定万维网数据是一个预先存在的组(通常是)。 如果不是用webreplace上面的www-data,首先执行以下操作:
groupadd web
usermod -aG web www-data

就个人而言,我会用ACL来做,但是我不知道在Ubuntu上setfacl是否是一个选项:
setfacl -m user:www-data:rx /home/*
setfacl -R -m user:www-data:rwx /home/*/www
setfacl -d -R -m user:www-data:rwx /home/*/www

你有几个select在这里…

首先,你可以使用这个组。 为此创build一个组(或使用预先存在的组)。 将apache用户添加到该组。 将这些目录的组所有者设置为您之前创build的组。 允许组读取权限并在目录上执行。

其次,你可以用apache设置suexec。 使用这个,每个特定的虚拟主机的apache进程将开始使用该“用户”帐户,从而允许该进程访问适当的目录。

我是这样做的:

 chgrp www-data /home/*; chgrp www-data /home/*/www/; chmod g+s /home/*/www/; #So that every newly created file inherits the group www-data