fedora 上的 httpd(apache 服务器),符号链接有效但无法将 see/access 文件放入其中?

httpd (apache server) on fedora, symbolic links work but unable to see/access files inside?

我在 Fedora 服务器 35 上 运行ning httpd 并想用它在我的本地网络上提供文件服务。它适用于直接存储在 /var/www/html 目录下的文件(例如 /var/www/html/videos/video.mp4 可以在任何本地设备上通过 http://IP/videos/video.mp4 访问)。

我想提供存储在文件系统其他位置的文件。我的计划是为这些位置创建符号 link。当我这样做时,我 运行 在尝试访问文件时陷入禁止的错误(例如视频文件 /files/videos/video.mp4 linked with a sym link /var/www/html/videos-link -> /files/videos/ 以便我(理论上)使用 http://IP/videos-link/video.mp4

访问它

我可以正常导航到 http:///IP/videos-link(目录页面的索引,但未列出任何文件),但试图访问文件 (http://IP/videos-link/video.mp4)给我 403 禁止。

我的配置 (/etc/httpd/conf/httpd.conf) 看起来像这样(有点乱,因为我一直在尝试自己修复它):

<Directory />
    Options FollowSymLinks Indexes
    AllowOverride All
    Require all granted
</Directory>

...

<Directory "/var/www">
    Options +FollowSymLinks +Indexes
    AllowOverride All
    Require all granted
</Directory>

...

<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

...

<Directory "/files/videos">
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

为了让它工作,我已经确保 sym link 和所有目录具有相同的所有者,并且它们的所有 777 所以 ownership/read 权限应该不是问题。非常感谢您的帮助,谢谢。

我的问题是 SELinux。为了让它立即工作,我可以使用

将 SELinux 设置为宽容模式
# setenforce 0

这会在启动时刷新并且可能不安全,因此永久修复(只让 httpd 通过)将是:

# semanage permissive -a httpd_t

可以在此处找到有关 Fedora 中 SELinux 的更多详细信息:https://docs.fedoraproject.org/en-US/quick-docs/getting-started-with-selinux/