SELinux 禁止访问 httpd userdir

SELinux 禁止访问 httpd userdir

我正在运行一台 CentOS 机器。我想用 Apache 为用户目录提供服务,所以我配置httpd.conf为允许该public_html目录。

我已将apache用户添加到我的用户组和chmod g+xrpublic_html顶层目录。如果我su apache可以,则不会cd /home/nijansen/public_html出现问题。

但是,当我请求时http://localhost/~nijansen,我收到403 Forbidden错误。我能够将其缩小到 SELinux 问题 - 当我禁用 SELinux 时,它工作正常。

我已经完成了/usr/sbin/restorecond ~/public_html,并ls -Zd ~/public_html给了我

drwxr-x---. nijansen nijansen unconfined_u:object_r:httpd_user_content_t:s0 public_html

/var/log/httpd/error

[Fri Oct 05 20:20:25 2012] [error] [client 127.0.0.1] (13)Permission denied: access to /~nijansen denied

现在我束手无策了,搜索这个问题至今没有找到任何答案。如果能给我一些正确的提示,我将不胜感激。

更新

为了进行故障排除,我已将 SELinux 模式设置为宽容,它确实给出了一些日志,但我无法解释它们:

Oct  5 20:50:18 localhost kernel: type=1400 audit(1349463018.930:95232): avc:  denied  { search } for  pid=10443 comm="httpd" name="nijansen" dev=dm-6 ino=12058625 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:user_home_dir_t:s0 tclass=dir
Oct  5 20:50:18 localhost kernel: type=1400 audit(1349463018.938:95233): avc:  denied  { getattr } for  pid=10444 comm="httpd" path="/home/nijansen" dev=dm-6 ino=12058625 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:user_home_dir_t:s0 tclass=dir

答案1

通过过滤输出ausearch -m avc | audit2allow很容易找到罪魁祸首:


$ echo "
 Oct  5 20:50:18 localhost kernel: type=1400 audit(1349463018.930:95232): avc:  denied  { search } for  pid=10443 comm="httpd" name="nijansen" dev=dm-6 ino=12058625 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:user_home_dir_t:s0 tclass=dir
 Oct  5 20:50:18 localhost kernel: type=1400 audit(1349463018.938:95233): avc:  denied  { getattr } for  pid=10444 comm="httpd" path="/home/nijansen" dev=dm-6 ino=12058625 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:user_home_dir_t:s0 tclass=dir
 " | audit2allow
 ============= httpd_t ==============
 !!!! This avc can be allowed using the boolean 'httpd_enable_homedirs'
allow httpd_t user_home_dir_t:dir { search getattr };

为了解决这个问题,请以 root 身份运行:


 # setsebool -P httpd_enable_homedirs=on

相关内容