Apache 2.4 不遵循符号链接并给出 403 Forbidden?

Apache 2.4 不遵循符号链接并给出 403 Forbidden?

我一直试图在本地主机上将我的项目设置为符号链接/var/www/html,我可以访问放置在其中的普通文件或目录html,但是当我创建符号链接时some/other/path,它给出 403 Forbidden 并error_logAH00037: Symbolic link not allowed or link target not accessible: /var/www/html/path/to/project

现在我在这里和其他 StackExchange 网站上进行了相当广泛的搜索,但没有答案。我读到了关于httpd.conf Directory标签的信息Indexes FollowSymlinks,我也有我的默认配置/var/www/html。我还更新了权限并尝试使用root,apache和我自己user作为符号链接所有者和实际目录或文件所有者,但似乎没有任何效果。

我还在.htaccess我的实际项目目录中放置了一个文件,其中包含此文件

    Options Indexes

我不明白是否有必要,这只是我尝试过的解决方案的一部分。

如果我需要做任何其他选项,请告诉我,因为我认为这可能会被标记为重复,但我已经搜索了这个问题的答案并遵循了不同的建议。

谢谢

系统

我有 Fedora 32,默认 apache httpd 作为服务运行

编辑:

正如评论中提到的,我应该检查 SELinux,我将其设置为宽容的模式,但没有改变任何内容,仍然是 403 Forbidden。

答案1

好的,感谢所有发表评论并帮助我找到答案的人,首先要检查的是确保所有目录都已x从您指向符号链接的位置执行位,就像我有这个结构 /var/www/html/project -> /home/user/Documents/project一样当您这样做时,没有获得/home/user对其他人执行的权限

ls -l /home

你的输出应该是

drwx--x--x. user user 4.0K user

对于所有目录一直到您正在符号链接的目录都是如此/var/www/html

检查权限并httpd.conf检查您是否正在使用后SELinux及其启用于执行模式。

sestatus

这将告诉您 SELinux 是否正在运行以及处于哪种模式

SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Memory protection checking:     actual (secure)
Max kernel policy version:      32

这是我的机器上的状态,如果未安装,也许无法找到命令?

那么主要是 SELinux 问题。一旦您设置了正确的权限,您将收到有关本地主机请求的警报,表明有人正在访问他们不应该访问的内容,然后您应该应用所需的任何策略,对我来说,我必须允许从目录httpd中读取。project我从那里得到了解决方案这里。但它用于创建文件,因此我通过首先检查应用的内容来修改/var/www/html命令

ls -lZ /var/www
drwxr-xr-x. 3 root root system_u:object_r:httpd_sys_content_t:s0 00:00 html

所以httpd_sys_content_t你的目录中需要这个。

sudo semanage fcontext -a -t httpd_sys_content_t "/home/user/Documents/project(/.*)?"

(/.*)?意味着此路径之后的任何内容也应应用此标签。

之后我将新配置应用到 SELinux

sudo restorecon -R project/

然后检查它

ls -lZ /var/www/html/project/
total 4
-rwxr-xr-x. 1 user user unconfined_u:object_r:httpd_sys_content_t:s0 35 00:00 index.php

您会看到更改已得到反映,现在如果您提出请求,它应该会给您回复。

希望这对将来的人有所帮助,如果我再次偶然发现这一点,这应该会指导我采取步骤。

感谢所有为此做出贡献的人。

相关内容