我一直在尝试为同一台服务器(带有 Apache httpd 2.4.6-88 的 CentOS 7)上的给定目录设置目录列表。
我偶然发现了一个显示公共域图标的示例,该示例似乎随 httpd 一起提供,并且运行良好。
我尝试将我的文件复制到图标旁边,效果很好=)我可以浏览我的目录并获取其中的文件。
示例位于下方/usr/share/httpd/icons/
,而我的文件位于下方/usr/share/httpd/delivery
我没能做到的是列出文件/var/local/delivery
在我为此目的创建的目录下。
整个目录树都在这里,我可以浏览所有目录,但无法显示其中的文件...我的目录树中的每个“叶”目录下都有一个空列表,文件应该位于其中。
更改目录/文件的所有者似乎没有效果,所以我排除了某种权限问题。
这是我添加的配置/etc/httpd/conf.d/autoindex.conf
Alias /deliveries/ "/var/local/delivery/"
Alias /deliveries "/var/local/delivery/"
<Directory "/var/local/delivery/">
Options Indexes MultiViews FollowSymlinks
AllowOverride None
Require all granted
</Directory>
以下是IndexIgnore
同一文件中的行
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
我错过了什么“隐藏”我的文件(而不是目录) 仅有的当它们处于之下/usr/share/httpd/delivery
和不处于之下时/var/local/delivery
?
答案1
我终于找到了缺失的东西。我不是极其熟悉 SELinux,但问题似乎出在那里。
使用此命令:
chcon -R -t httpd_sys_content_t /var/local/delivery
我更改了目录的 SELinux 上下文,以允许 httpd 访问它。我在这里找到了解决方案https://askubuntu.com/a/720162/814202尝试直接访问我未看到的文件之一后,出现了错误
access denied because search permissions are missing on a component of the path
这让我想到了 askubuntu 问题。
希望这可以帮助