我有一个文件,favicon.ico。它实际上是一大组嵌套文件,但纯粹是为了举例,就这一个。
如果我这样做cp favicon.ico favicon2.ico
,Apache 就可以正常读取第二个。
如果我这样做mv favicon.ico favicon3.ico
,Apache 会在 favicon3.ico 上抛出 403。
如果我su apache
,我可以将该文件作为 apache 读取。
stat
表示除 inode 编号外,两个文件完全相同。
是不是有什么隐藏的标志或者我遗漏了什么东西?我从来没有见过这样的事情。
error_log
说(13)Permission denied: access to /favicon3.ico denied
答案1
SELinux 拒绝你访问该文件,因为你已移动代替复制它从文件系统上的其他位置移动到其最终位置。因此它保留了其原始安全上下文,不允许 Apache 访问它。
要解决该问题,请重新标记该文件(以及可能的所有其余文件)。
例如:
restorecon -r -v /var/www/html
为了避免将来出现问题,请复制文件(并在必要时删除原始文件)。