文件权限没有意义(Linux,Apache)

我有一个文件权限的问题,这让我疯狂。 我有一个Perl Web应用程序,它自己安装,复制一些文件,创build数据库,等等。 一切正常,除了一些图像文件。 这些图像不能被Apache访问:

(13) Permission denied: access to /path/to/image.gif denied 

但是,文件es 644.我已经尝试过chmod 777,并且向Apache用户发送了chown,没有正面的结果。

而让我疯狂的是:如果我复制文件,然后重命名旧文件并重命名新文件,它的工作原理!

 mv image.gif image.gif.bak cp image.gif.bak image.gif 

文件是相同的,相同的大小,相同的权限,相同的所有者和组。 我可以在图像查看器中看到。 但是,如果我恢复原始文件(删除“新”文件,并将“旧”文件重命名为其原始名称),我又得到了“权限被拒绝”:

 rm image.gif mv image.gif.bak image.gif 

所有图像文件都会出现此问题,但不会出现文本文件(静态HTML,CSS …)。

什么可能导致这种奇怪的行为?

我在CentOs 5.5下使用Apache 2.2.3。 Perl脚本(Perl 5.8.8)与Suexec一起运行。

我怀疑SELinux可能导致问题? 禁用它,看到事情开始工作:

 su - /sbin/setenforce 0 

如果事情在禁用之后起作用,请尝试restorecon然后重新启用SELinux,看看您的SELinux环境是否被破坏了。

这听起来像是你有一个权限问题,由于

  • 使用suexec ,这意味着CGI脚本和Apache可以/不可以在同一个用户/组下运行
  • 我在你的描述中没有看到你检查了图像文件的path,而不是文件本身

suexec将在脚本的所有者用户和组下执行该脚本。 Apache本身将继续使用httpd.conf(或apache [2] .conf,conf.d / …)中定义的自己的用户/组加载文件。

  • 执行一个ls -d的path目录直到映像文件,以确保Apache至less有一个--x访问(没有视图,但访问指定的文件)。
  • 您可以通过将组更改为使用chgrp apache-group directory的Apache组(configuration文件中的searchGroup ),然后将x访问权限添加到同一目录chmod g+x directory ,从而为chgrp apache-group directory访问chmod g+x directory

你有没有在图像文件的Apache安装MIMEtypes? 你可以在你看的目录下执行命令ls -l并在这里粘贴输出。