无法在 apache2 中跟踪符号链接

无法在 apache2 中跟踪符号链接

我在 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 身份运行该脚本,而无需输入密码。

相关内容