ate*_*med 3 fedora permissions php symlink apache-httpd
我一直在尝试在本地主机上将我的项目设置为符号链接/var/www/html,我可以访问放置在其中的普通文件或目录html,但是当我创建符号链接时some/other/path,它给出 403 Forbidden 并error_log说AH00037: 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
Run Code Online (Sandbox Code Playgroud)
我不明白是否有必要,这只是我尝试过的解决方案的一部分。
如果我需要做任何其他选项,请告诉我,因为我认为这可能会被标记为重复,但我已经搜索了这个问题的答案并遵循了不同的建议。
谢谢
系统
我有 Fedora 32,默认 apache httpd 作为服务运行
编辑:
正如评论中提到的,我应该检查 SELinux,我将其设置为Permissive模式,但没有更改任何内容,它仍然是 403 Forbidden。
好的,感谢所有发表评论并帮助我找到答案的人,首先要检查的是确保所有目录都已x从您指向符号链接的位置执行位,就像我有这个结构
/var/www/html/project -> /home/user/Documents/project一样当您这样做时,没有获得/home/user对其他人执行的权限
ls -l /home
Run Code Online (Sandbox Code Playgroud)
你的输出应该是
drwx--x--x. user user 4.0K user
Run Code Online (Sandbox Code Playgroud)
对于所有目录一直到您正在符号链接的目录都是如此/var/www/html。
检查权限后,httpd.conf检查您是否正在使用SELinux及其是否在强制模式下启用。
sestatus
Run Code Online (Sandbox Code Playgroud)
这将告诉您 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
Run Code Online (Sandbox Code Playgroud)
这是我的机器上的状态,如果未安装,也许无法找到命令?
那么主要是 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
Run Code Online (Sandbox Code Playgroud)
httpd_sys_content_t所以你的目录中需要这个。
sudo semanage fcontext -a -t httpd_sys_content_t "/home/user/Documents/project(/.*)?"
Run Code Online (Sandbox Code Playgroud)
(/.*)?意味着此路径之后的任何内容也应应用此标签。
之后我将新配置应用到 SELinux
sudo restorecon -R project/
Run Code Online (Sandbox Code Playgroud)
然后检查它
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
Run Code Online (Sandbox Code Playgroud)
您会看到更改已得到反映,现在如果您提出请求,它应该会给您回复。
希望这对将来的人有所帮助,如果我再次偶然发现这一点,这应该会指导我采取步骤。
感谢所有为此做出贡献的人。
| 归档时间: |
|
| 查看次数: |
9691 次 |
| 最近记录: |