为什么我的Apache只能访问root拥有的文件?

时间:2013-05-16 00:17:34

标签: linux apache permissions centos file-permissions

在centos 6.4上运行apache,我的Web服务器看不到任何文件,除非root用户创建或复制它们。

ps aux | grep apache表明apache作为apache用户运行,而不是root用户。 我在文件上尝试了chown apache:apache。 我甚至在文件上设置了chmod 777

-rwxrwxrwx. 1 apache apache 2300 May 15 17:46 example.php

我仍然收到http 500错误,还有什么可能是错的?

即使我将文件chown到root:root,它也行不通,我需要以root身份cp file.php file.php才能工作。我不明白!

chcon -t httpd_sys_content_t example.php让我在那里! - 谢谢克里斯。 这是否意味着我需要更改我的FTP用户的安全上下文设置,以便他们可以上传这样的文件,还是需要更改SELinux中的规则以允许执行更广泛的文件?

2 个答案:

答案 0 :(得分:1)

SELinux可能会成为一个问题。

ls -lZ example.php

要排除SELinux,您可以:

getenforce

然后

setenforce 0

然后再次尝试访问此文件......

这将暂时将SELinux置于许可模式。 您可能必须更改文件的上下文!让我们知道它是如何进行的,我们将从那里开始。

<强>更新

正如预期的那样,SELinux阻止了apache访问该文件。如果您信任此文件,则可以更改其上下文:

chcon -v --type=httpd_sys_content_t example.php

如果有多个文件,您可以使用-R标志,因此:

chcon -vR --type=httpd_sys_content_t /html/

正如您所注意到的那样,ls使用-Z标志来显示SELlinux上下文。您可以尝试将此标记用于其他程序,例如ps

要解决SELinux问题,我建议sealert - setroubleshoot-server的一部分。

我怎么知道您最有可能使用SELinux?您的文件系统已标记。 我怎么知道你的fs被标记了? -rwxrwxrwx**.** - 权限末尾的点告诉fs已标记。

不要忘记更改权限!你真的不想要777 ...... 希望有所帮助。

答案 1 :(得分:-2)

如果您启用了suphp,则具有777权限的文件将无法正常工作并提供500错误,请更改权限644。

如果您仍面临同样的问题,请同时检查错误日志。

为什么要尝试使用相同名称的'cp file.php file.php',复制使用下面的其他名称或复制到file.php不存在的其他位置。

  

cp file.php file.php-bak

  

cp file.php another-dir / file.php