我有两个文件在我的根目录。 一个送达罚款,另一个送回403。
以下是access_log的输出:
xx.xx.xx.xx - - [22/Nov/2012:09:53:21 -0500] "GET /index.html HTTP/1.1" 200 6 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11" xx.xx.xx.xx - - [22/Nov/2012:09:53:22 -0500] "GET /sales.html HTTP/1.1" 403 309 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11"
以下是error_log的说法:
[Thu Nov 22 09:53:22 2012] [error] [client xx.xx.xx.xx] (13)Permission denied: file permissions deny server access: /var/www/html/sales.html
这是一个目录列表:
09:55:52 myhost /var/www/html> ls -la total 104 drwxr-xr-x. 2 root root 4096 Nov 21 16:05 . drwxr-xr-x. 6 root root 4096 Nov 21 11:06 .. -rwxrwxrwx. 1 apache apache 6 Nov 22 09:47 index.html -rwxrwxrwx. 1 apache apache 91196 Nov 21 16:05 sales.html
最后是httpd.conf中的设置
<Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory>
这真是烘烤我的面条。 我已经尝试了各种文件/目录权限,并重新启动了Apache多次,但无济于事。 有任何想法吗? 为什么一个文件服务,而不是另一个?
那么,我对SELinux或安全上下文了解不多,但这似乎是在这里玩的。
12:10:24 myhost /var/www/html> ls -laZ drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 . drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 .. -rwxrwxrwx. apache apache unconfined_u:object_r:httpd_sys_content_t:s0 index.html -rwxrwxrwx. apache apache unconfined_u:object_r:user_home_t:s0 sales.html
执行以下命令似乎解决了Apache的权限问题。
12:10:28 iceberg /var/www/html> sudo restorecon -r sales.html
而作为一个双重检查,我们可以看到,行为不端的文件的安全上下文现在是不同的。
12:10:34 myhost /var/www/html> ls -laZ drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 . drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 .. -rwxrwxrwx. apache apache unconfined_u:object_r:httpd_sys_content_t:s0 index.html -rwxrwxrwx. apache apache unconfined_u:object_r:httpd_sys_content_t:s0 sales.html
我想你应该看看猴子博索说什么。 但是,如果没有,那么你可以尝试临时SELinux。 不要在公共互联网上的生产服务器上这样做,但真的.. 不要 :
sudo setenforce 0
在你检查后..
sudo setenforce 1
当然,别忘了把它重新开启。