你如何让Apache遵循符号链接到另一个目录,而不是将目标目录的每个父目录chmod到o + x?

例如,我有这个问题相同的问题: https : //stackoverflow.com/questions/7381371/apache-wont-follow-symlinks-403-forbidden

我的DocumentRoot位于/srv/http/default/htdocs ,我试图将它链接到/home/trusktr/htdocs

为了得到它的工作,我必须chmod o+x每个目录下到/home/trusktr/htdocs ,例如:

 chmod o+x /home chmod o+x /home/trusktr chmod o+x /home/trusktr/htdocs 

然后就像上面提到的问题一样开始工作。

我有Options Indexes FollowSymLinks/srv/http/default/htdocs

如何使符号链接(软链接)工作,而不必chmod任何文件夹到o+x

这显然取决于文件夹的所有权(组)。

如果apache进程无权访问文件夹,则只需设置文件夹的全局执行。 如果您想阻止授予全局执行权限,则将文件夹重新分配给apache进程运行的组,并为该组(“g + w”)授予执行权限。

像apache一样思考 – 无论链接指向哪里,用户apache都运行(或者,如果使用FastCGI,可能是为虚拟主机分配的用户)必须具有对此目标的文件系统访问权限。 您可以通过几种方式“修复”它:

1)像你所描述的那样,chmodding目录

2)添加用户到与apache相同的组,并使目录组可读

3)而不是chmod的它的阿帕奇你可以做相反的方向 – 链接为用户,并在物理上放在apache的htdocs树(或添加apache用户到一些组用户属于,并使他的目录组可读)

4)你可以使用“mount -bind”将目标挂载到apache可见的目录中。 有一种方法可以使用suexecdynamic地执行它,但是如果是特定的情况和一个目录,你可以直接挂载它我猜(如果需要的话,可以把mount -bind放到fstab中)

无论如何,像阿卡沙说,这是许可问题,主要是通过操纵集团所有权/集团可读的权利解决。

噢,当你需要检查它是否工作时,我的意思是如果apache看到了它应该看到的东西,你可以确保它与sudo-ing到apache用户(从根会话,如“su -s / bin / bash万维网数据“) – 而作为apache用户,只需简单地”cd“到该目录。 所以,如果这个用户能够去特定的目录,那么作为“他”的web服务器也将能够。

6)理论上,你也可以configurationapache作为你需要访问目录的同一个用户来运行(而不是www-data左右),但这可能是他们最糟糕的想法:)