为什么 httpd 在进入 Fedora 上我的主目录的符号链接后会出现错误?

为什么 httpd 在进入 Fedora 上我的主目录的符号链接后会出现错误?

我刚刚在操作系统更改后重新启用了应用程序。当然,它的符号链接位于 /var/www/myapp 中。将权限更改为 0775(甚至临时的 0777),将所有者更改为 apache:myuser、myuser:apache、myuser:myuser 和 apache:apache 并禁用 SELinux - 我受够了。什么都不起作用,我仍然收到令人恼火的消息:

禁止访问 您无权访问此服务器上的 /

错误日志:

[客户端 127.0.0.1:38050] AH00037:不允许符号链接或无法访问链接目标:/var/www/myapp

我对这种情况感到非常生气,几乎浪费了整个晚上和半个晚上:/

/var/www/myapp 和里面的所有文件都是 775 并且正在运行 apache:apache 。

我还尝试重新安装 httpd、php 和它的 apache 模块,浏览整个 www 但什么也没有。 :/ 请尽快需要帮助!

编辑: 我忘了提及 - /var/www/myapp 是 /home/myfolder/projects/myapp <--- 这也已被 chmod'ed 和 chown'ed 符号链接。

编辑2:

现在我已在 conf/httpd.conf 中将用户和组添加为“我的用户”,因此允许它写入我的主文件夹中并符号链接错误不再存在,但 apache 仍然无法写入我的用户所属的文件夹...还尝试在 conf/httpd.conf 中将我的用户与 apache 用户混合,并为 /home/.../myapp 设置类似的权限。 RedHat 发行版真是太棒了!在我的例子中,特权被这样忽略已经不是第一次了。 :/

编辑3: 我通过删除 Fedora 操作系统并安装 UBUNTU :D 解决了我的问题,效果非常好。相同的权限,相同的文件 - 符号链接或写入 apache:my_user 没有问题...我不明白...-_-

答案1

这个问题的答案是让符号链接由它所指向的文件/目录的所有者拥有。

这个额外的步骤是作为补丁引入的(只有 Fedora 正在应用或者因此会出现)。

阅读 Apache 源代码(我必须这样做,因为我在网上找不到答案,而这最接近它。)看来这OPT_SYM_OWNER就是罪魁祸首,这已经让你(和我)出局了。

修复方法是chown -h myuser:mygroup <the_symlink>myuser:mygroup目标文件/目录相同。

答案2

验证 apache 本身内部启用了符号链接。 Apache 不一定允许符号链接重定向,即使权限很好。

<Directory /var/www/myapp>
    Options +FollowSymLinks
    AllowOverride All
    ...
</Directory>

答案3

假设 FollowSymLinks 设置正确,我认为问题是您的主目录不允许其他人遍历它(访问子目录时父目录的权限重要吗?)。这是 Fedora 上的默认设置;它好像Ubuntu 上的默认设置更加宽松,这就是切换到它的原因。

假设是这种情况,则错误消息不是最多信息丰富,但也没有错误。

我理解你感到沮丧,但我不认为这里发生了什么真正神秘的事情,也没有什么特别错误的事情; Fedora 默认设置开箱即用,更加安全/隐私敏感。 (根据记录,这也是相当容易让它在启用 SELinux 的情况下工作,并为您提供额外的保护层(如果您愿意)。)

所以,免责声明:我在 Fedora 上工作,如果每个人都使用 Fedora 那就太棒了 - 但如果他们不使用也没关系;这是一个很大的 Linux 世界。然而,事情是这样的...迟早,你会在 Ubuntu 中发现类似的情况,其中奇怪的错误消息并不能说明全部情况。也许把它扔到窗外并转向 Arch 或 openSUSE 或 $flavoroftheday ——甚至回到 Fedora ——可以解决你的问题,只是因为我们的配置略有不同。但下一次这样的问题还要多久呢?我知道你真的只想完成你的工作而不是让你的电脑妨碍你,但最终,生气并改变一切会导致更多的工作。

答案4

我让它与来自 SELinux 的消息一起工作:

SELinux 正在阻止 httpd 对目录 ***** 进行读取访问。

***** 插件 catchall_boolean (89.3 置信度)建议 ******************

如果您想允许 httpd 读取用户内容,那么您必须通过启用“httpd_read_user_content”布尔值来告诉 SELinux。

...

setsebool -P httpd_read_user_content 1

相关内容