所以我遇到了这个非常奇怪的问题,我已经解决了,但我不明白为什么会发生这种情况。
我有一个通过 httpd 托管的文件。下面是我测试/想到的一系列内容,试图解释发生了什么:
- 当我尝试访问该文件时,出现 403 错误。
- 当我在 Apache 中执行索引列表时,它甚至没有显示,但其他文件却显示出来
- 目录中其他 644 个文件显示在索引中,我可以访问它们
- 将权限设置为 777 仍然会出现 403 错误,并且没有索引列表
- 如果我尝试访问同一目录中的虚假文件,则会收到 404
- 我创建了该文件的硬链接,但该硬链接未显示在索引中,因此我无法访问它
- 我创建了该文件的副本,它显示在列表中,我可以访问它
- 我将原始文件移至 .bak 并将副本移至与原始文件相同的文件名,我仍然可以访问副本,但无法访问原始文件
- 我尝试 su - apache 来领导原始内容,并且能够
- stat 似乎显示除了时间和 inode 值之外,两者之间的所有内容都相同
- access_log 和 error_log 显示正在访问正确的文件,而我在两者中都得到了 403 [2014 年 4 月 22 日星期二 14:27:14] [错误] [客户端 XXX.XXX.XXX.XXX] (13) 权限被拒绝:访问 /PATH/ACE+TAO-6.2.0-1.el6.x86_64.rpm 被拒绝
还有什么人能想到我应该尝试解释一下这里发生了什么吗?我倾向于认为这是一个 httpd 问题,因为我可以毫无问题地 cp、stat 和 head 文件。但我不知道如何进行测试。
$ getfacl ACE+TAO-6.2.0-1.el6.x86_64.rpm
# file: ACE+TAO-6.2.0-1.el6.x86_64.rpm
# owner: root
# group: root
user::rw-
group::r--
other::r--
$ ls -lZ ACE+TAO-6.2.0-1.el6.x86_64.rpm
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 ACE+TAO-6.2.0-1.el6.x86_64.rpm
答案1
尝试一下restorecon ACE+TAO-6.2.0-1.el6.x86_64.rpm
;这admin_home_t
不应该出现在你的网络根目录中。