为什么在启用SELinux httpd_read_user_content并将文件设置为httpd_user_content_t后,Fedora 20仍然拒绝访问主目录?

在我的Fedora 20上,我已经了解到,为了允许像Apache这样的进程通过进程对文件进行写入访问,进程所有者(在我的情况下是apache )必须具有写入文件的权限。 而且,由于启用了SELinux,文件必须具有httpd_system_rw_content_t上下文。

它也看起来像一个SELinux政策阻止httpd访问/home下的任何文件。 几乎每个人都同意,要解决这个问题,你想访问的文件必须有安全上下文httpd_user_content_thttpd_user_rw_content_t 。 我一直这样做,但Apache仍然说它没有访问目录的权限。 当这些文件没有user_content上下文,我确实得到了SELinux的警告。 当设置上下文时,我不会收到警告,但是Apache仍然无法访问这些文件。 /home/me/game下的所有东西都具有以下用户权限和安全上下文:

 $ sudo chcon -Rv --type=httpd_user_rw_content_t game $ sudo setsebool -P httpd_read_user_content 1 $ sudo chown -R :apache game $ ll -Zd game drwxrwxr-x. me apache unconfined_u:object_r:httpd_user_rw_content_t:s0 game 

然而Apache告诉我:

被禁止

您无权访问此服务器上的游戏。

可能有人知道我还能检查什么?

唉…总是检查你的权限,人。 尽pipeSELinux的设置很好,但是在我想让apache访问的path上还有一个目录,这个目录不允许用户读/执行它。

首先,我应该看看/var/log/httpd/error_log ,这明白地说:

(13)权限被拒绝:[client 127.0.0.1:38628] AH00035:访问/游戏/被拒绝(文件系统>path'/ home / me /游戏'),因为path的组件上缺lesssearch权限

在Google上查找错误时,我发现这个页面也说明了这个问题。 由于从/var/www服务的东西没有问题,所以我一直检查目录权限:

 $ ll -d / drwxr-xr-x. 18 root root 4096 Jun 22 18:52 / $ ll -d /var drwxr-xr-x. 21 root root 4096 Jun 22 12:51 /var $ ll -d /var/www drwxr-xr-x. 8 root root 4096 Jun 21 09:19 /var/www 

我一直沿着我的家庭陈列室做同样的事情:

 $ ll -d /home drwxr-xr-x. 4 root root 4096 Jun 13 21:31 /home $ ll -d /home/me drwx------. 35 me me 4096 Jun 22 19:05 /home/me 

是的…一个简单的sudo chmod o=rx /home/me让我走了。 如果不检查你们所要求的一切,我不可能做到,而且我感谢你。