我在 Ubuntu 14.04.2 LTS 上运行 apache2。问题是,我不断收到以下错误 ( tail -f /var/log/apache2/error.log
)
[Wed Jun 10 18:18:56.114203 2015] [core:error] [pid 14802] [client 10.0.0.100:48843] AH00037: Symbolic link not allowed or link target not accessible: /var/www/html/xxxx
在文件:/etc/apache2/sites-enabled/000-default.conf 我有
DocumentRoot /var/www/html
<Directory />
Options +FollowSymLinks
AllowOverride None
</Directory>
在 /var/www/html 目录中,我有一个名为“xxxx”的软链接指向 /root/xxxx
我重新启动了 apache
service apache2 restart
但它没有帮助。
有任何想法吗?
答案1
事实证明我的 /root 目录没有为 www-data 帐户授予正确的权限。它的权限是“drwx------”。我执行了一个命令chmod a+rx" /root
,现在它运行正常。
答案2
由于 /root 通常只能由 root 访问,因此这里还有一些其他的可能性以提高安全性。
如果 /root/xxxx 是一个文件夹,那么您不需要授予每个人对 /root 文件夹的读取权限,您可以更加严格,只给每个人 +x,这样他们就可以遍历 /root 文件夹并到达 /root/xxxx,因为路径是已知的,但不能读取 /root 中的其他内容。
如果 /root/xxxx 是一个文件,另一种方法是创建一个只能由 root 修改的脚本(为了更加安全,使用chattr +i
命令使其不可变),该脚本执行您希望 Apache 能够执行的操作(例如读取它)。然后,使用 sudoers 文件,允许 Apache 用户使用 sudo 命令以 root 身份运行该脚本,而无需输入密码。