即使禁用 SymLinkIfOwnerMatch,Apache 也不会在没有匹配所有者的情况下跟踪符号链接?

即使禁用 SymLinkIfOwnerMatch,Apache 也不会在没有匹配所有者的情况下跟踪符号链接?

我正在将一些托管帐户从带有 Apache 2.2 的 CentOS 6 转移到带有 Apache 2.4.34 的 CentOS 7。其中一些帐户通过目录符号链接符号链接到文件里面文件的 DocumentRoot外部DocumentRoot。

像这样:

root:root /var/lib/common/html/
user:user /home/user/app/           => /var/lib/common/html/
user:user /home/user/html/file.html => /home/user/app/file.html

它适用于 Apache 2.2。在 Apache 2.4 上,我收到 403 权限被拒绝响应。我找不到SymLinkIfOwnerMatch设置的证据,只能通过 grepping 配置文件找到。如果我将所有权设置为,FollowSymLinks403 错误就会消失。(请注意,“中间人”目录符号链接所有权无关紧要。无论如何,Apache 都会遵循它。)/home/user/html/file.htmlroot:root

Apache 2.4 是否会总是需要符号链接所有权匹配吗?似乎直接访问、mod_rewrite 甚至 Alias 都在强制所有权匹配,我不明白为什么。

答案1

我找到了答案。我使用的控制面板提供了一个带有附加补丁的 Apache 版本,它还包含一个harden-symlinks.patch文件 (来源)。补丁建议UnhardenSymLinks使用 Apache 选项,但当我尝试时,apachectl 出现错误Option UnhardenedSymLinks not allowed here。我在 VirtualHost 内部和外部、目录内部都尝试过,但它在任何地方都没有通过配置测试。

经过一番研究,似乎该补丁在大多数常见的托管控制面板中都很受欢迎。如果您正在使用其中一个,那么SymLinksIfOwnerMatch即使您FollowSymLinks在配置中指定,您也很可能使用它。

相关内容