centos 7 上配置SELinux允许nginx指定/home/www作为网站根目录

现象:

1 启动nginx成功,使用wget 127.0.0.1得到内容,但是提示是禁止访问(403);

2 查看/var/log/nginx/error.log,提示访问/home/www/l.com/i.html禁止;

3 查看SELinux 是否运行: sestatus -v,enable就是运行了

4查看/var/log/Audit/Audit.log日志,发现有提示到nginx被拒绝了;但是看不明白怎么处理...

它是类似这样的内容

type=AVC msg=audit(1416406823.013:3137): avc:  denied  { search } for  pid=15488 comm="nginx" name="www" dev="dm-3" ino=146 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:user_home_dir_t:s0 tclass=dir

5 安装人类能看得懂的转化工具:yum install setroubleshoot

6 echo >audit.log来清空这个日志,再刷新浏览器,访问一下这个url,让只生成一个出错日志

7 把出错内容转成可以看得懂的:sealert -a ./audit.log >qq.txt

8查看内容:cat qq.txt:

[[email protected] audit]# cat qq.txt
string index out of range
'list' object has no attribute 'split'

found 1 alerts in ./audit.log
--------------------------------------------------------------------------------

SELinux is preventing /usr/sbin/nginx from search access on the directory .

*****  Plugin catchall_boolean (47.5 confidence) suggests   ******************

If 您要 allow httpd to read user content
Then 您必须启用 'httpd_read_user_content' 布尔值告知 SELinux 此情况。

Do
setsebool -P httpd_read_user_content 1

*****  Plugin catchall_boolean (47.5 confidence) suggests   ******************

If 您要 allow httpd to enable homedirs
Then 您必须启用 'httpd_enable_homedirs' 布尔值告知 SELinux 此情况。

Do
setsebool -P httpd_enable_homedirs 1

*****  Plugin catchall (6.38 confidence) suggests   **************************

If 您确定应默认允许 nginx search 访问  directory。
Then 您应该将这个情况作为 bug 报告。
您可以生成本地策略模块允许这个访问。
Do
请执行以下命令此时允许这个访问:
# grep nginx /var/log/audit/audit.log | audit2allow -M mypol
# semodule -i mypol.pp

Additional Information:
Source Context                system_u:system_r:httpd_t:s0
Target Context                unconfined_u:object_r:user_home_dir_t:s0
Target Objects                 [ dir ]
Source                        nginx
Source Path                   /usr/sbin/nginx
Port                          <Unknown>
Host                          <Unknown>
Source RPM Packages           nginx-1.6.2-4.el7.x86_64
Target RPM Packages
Policy RPM                    selinux-policy-3.12.1-153.el7_0.11.noarch
Selinux Enabled               True
Policy Type                   targeted
Enforcing Mode                Enforcing
Host Name                     l.com
Platform                      Linux l.com 3.10.0-123.9.3.el7.x86_64 #1 SMP Thu
                              Nov 6 15:06:03 UTC 2014 x86_64 x86_64
Alert Count                   13
First Seen                    2014-11-19 22:32:40 CST
Last Seen                     2014-11-19 22:24:28 CST
Local ID                      bb55eec2-48bf-44eb-9722-7ca6f1045a59

Raw Audit Messages
type=AVC msg=audit(1416407068.287:3141): avc:  denied  { search } for  pid=15488 comm="nginx" name="www" dev="dm-3" ino=146 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:user_home_dir_t:s0 tclass=dir

type=SYSCALL msg=audit(1416407068.287:3141): arch=x86_64 syscall=open success=no exit=EACCES a0=7f0661e65bc0 a1=800 a2=0 a3=0 items=0 ppid=15487 pid=15488 auid=4294967295 uid=997 gid=996 euid=997 suid=997 fsuid=997 egid=996 sgid=996 fsgid=996 tty=(none) ses=4294967295 comm=nginx exe=/usr/sbin/nginx subj=system_u:system_r:httpd_t:s0 key=(null)

Hash: nginx,httpd_t,user_home_dir_t,dir,search

[[email protected] audit]#

9 按提示一步一步处理成功了就可以了.

时间: 2024-12-21 09:50:14

centos 7 上配置SELinux允许nginx指定/home/www作为网站根目录的相关文章

[转]CENTOS 6.5 配置YUM安装NGINX+服务器负载均衡

原文连接: CENTOS 6.5 配置YUM安装NGINX  http://blog.sina.com.cn/s/blog_69f467b70102uyux.html 本文介绍一下如何用yum源安装Nginx. 第一步,在/etc/yum.repos.d/目录下创建一个源配置文件nginx.repo: cd /etc/yum.repos.d/ vim nginx.repo 填写如下内容: [nginx] name=nginx repo baseurl=http://nginx.org/packa

如何在CentOS 6上通过YUM安装Nginx和PHP-FPM(转)

准备篇: 1.配置防火墙,开启80端口.3306端口       vi /etc/sysconfig/iptables       -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT(允许80端口通过防火墙)       -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT(允许3306端口通过防火墙)特别提示:很多网友把这两条规则添加到防

CentOS 7 上配置LVS + keepalived + ipvsadm

一.部署环境keepalived:10.10.10.30(CentOS 7)lvs1:10.10.10.140(CentOS 6.4)lvs2:10.10.10.150(CentOS 6.4) 二.在lvs1:10.10.10.140上配置[[email protected] ~]# yum install -y httpd [[email protected] ~]# /etc/init.d/httpd start[[email protected] ~]# cd /var/www/html/

CentOS系统上配置https服务

在CentOS6.9(http2.2)配置https 在CentOS6.9和CentOS7分别实现配置 在CentOS6.9(http2.2)配置https 创建前准备: 安装opensssl包  和 http2.2 1.在主机(192.168.109.100)创建私有CA (1)获取私钥  注意:1.私钥保存路径是按/etc/pki/tls/openssl.cnf配置文件规定的即/etc/pki/CA/private/ 2.做成的私钥的权限必须是600             3.文件名必须以

CENTOS 6.5 配置YUM安装NGINX

摘要: 本文介绍一下如何用yum源安装Nginx 第一步,在/etc/yum.repos.d/目录下创建一个源配置文件nginx.repo: cd /etc/yum.repos.d/ vim nginx.repo 填写如下内容: [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1 保存,则会产生一个/etc/yum.repos.d/

CentOS 6.7 配置 yum 安装 nginx

第一步,在/etc/yum.repos.d/目录下创建一个源配置文件nginx.repo: cd /etc/yum.repos.d/ vim nginx.repo 填写如下内容: [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/6/$basearch/ gpgcheck=0 enabled=1 保存,则会产生一个/etc/yum.repos.d/nginx.repo文件. 下面直接执行如下指令即可自动安装好Ngin

centos 7 上配置mysql 开机启动详解

之前多次在centos7环境下配置mysql开机自启动出现了错误.现留下篇文章已做记录 一.centos7与centos6相比有什么不同: 1 在centos7中服务不在是用service这个命令来启动与停止,也不再用chkconfig来设置开机启动与否! 在centos7中所有对服务的管理都集中到了systemctl当中:systemctl不再是合之前一样依赖/etc/init.d/下 的脚本,它是通过配置文件来完成对服务的管理的: 二.创建systemctl管理mysql的配置文件: 1 创

在centos服务器上配置gitlab钩子引发的一系列问题

为了给公司的服务器上搭建gitlab环境并且配置钩子(实现在本地git push之后服务器自动git pull),整了好久,最后终于把问题解决了,下面是记录安装gitlab之后引发的一系列问题: 首先搭建gitlab是参考了http://www.linuxidc.com/Linux/2016-06/131992.htm这篇文章,使用的是bitnami制作的一键安装包,下载下来的是run格式的文件,需要先给这个文件执行权限: chmod +x filename filename是这个文件的名字 安

CentOS 7 下配置 yum 安装 Nginx。

进入/etc/yum.repos.d/目录下创建一个源配置文件nginx.repo: cd /etc/yum.repos.d/ vim nginx.repo 填写如下内容: [nginx]name=nginx repobaseurl=http://nginx.org/packages/centos/7/$basearch/gpgcheck=0enabled=1 保存,则会产生一个/etc/yum.repos.d/nginx.repo文件. 执行如下指令即可自动安装好Nginx: yum inst