背景: 我正在运行安装了 Apache 的 CentOS VM。Web 根目录是“/var/www/html”。有一个子目录(“/var/www/html/mp3”),其中包含两个 mp3。两个 mp3 具有完全相同的权限(644)。“/mp3”目录具有 755 个权限。我有一个数据库,其中包含有关歌曲的某些信息,最终目标是能够输入搜索词并有一个 php 脚本,该脚本返回包含这些关键字的歌曲,并允许您播放它们。我使用的是默认的“httpd.conf”配置。
问题: 我只能看到其中一首歌曲。访问 /mp3 时,您将看到一个目录,其中包含仅有的“MasterOfPuppets.mp3”;确实如此不是显示“One.mp3”。当您访问“/mp3/MasterOfPuppets.mp3”时,它将允许您播放该歌曲;当您访问/mp3/One.mp3时,它会显示403:禁止访问。我几乎确信这是一个权限问题,但鉴于权限一模一样对于这两个文件,我完全不知道这是怎么发生的。
有谁知道是什么原因导致了这个问题?过去 3 个小时里,我一直在绞尽脑汁。Google 让我失望了。
编辑:
[root@dugan mp3]# ls -lrtZ *mp3
-rw-r--r--. root root unconfined_u:object_r:home_root_t:s0 One.mp3
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 MasterOfPuppets.mp3
编辑2:
这是 SELinux 的问题。我在这里找到了文档:这里
在“/mp3”文件夹中,我输入了“chcon -t httpd_sys_content_t One.mp3”,然后又输入了一次“ls -lrtZ *mp3”,得到了以下结果:
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 One.mp3
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 MasterOfPuppets.mp3
问题解决了,我现在可以访问 One.mp3。SELinux 是最好的 Linux。感谢大家的帮助。
答案1
从评论复制到答案:
你说的是“CentOS 的奇怪权限问题”,我认为是“selinux”。检查 /var/log/audit/audit.log 并查看是否提到了 One.mp3。