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:

[root@l 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

[root@l audit]#

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

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
CentOS 7上配置Nginx的步骤如下: 1. 安装Nginx: 使用以下命令安装Nginx: ```bash sudo yum install nginx ``` 2. 启动Nginx服务: 使用以下命令启动Nginx服务: ```bash sudo systemctl start nginx ``` 3. 配置防火墙规则(如果需要): 如果您的防火墙启用,您需要允许HTTP和HTTPS流量通过。可以使用以下命令开放这些端口: ```bash sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload ``` 4. 设置Nginx开机自启动: 使用以下命令设置Nginx在系统启动时自动启动: ```bash sudo systemctl enable nginx ``` 5. 配置默认网站Nginx的默认网站配置文件通常位于`/etc/nginx/conf.d/default.conf`。您可以使用任何文本编辑器打开此文件进行编辑。 - 删除默认配置文件: ```bash sudo rm /etc/nginx/conf.d/default.conf ``` - 创建新的默认网站配置文件: 使用您喜欢的文本编辑器创建一个新的配置文件,例如`/etc/nginx/conf.d/mywebsite.conf`。 ```bash sudo nano /etc/nginx/conf.d/mywebsite.conf ``` 在新创建的配置文件中,添加以下内容作为示例: ```nginx server { listen 80; server_name your_domain.com; root /var/www/html; index index.html; location / { try_files $uri $uri/ =404; } } ``` 将`your_domain.com`替换为您自己的域名或IP地址,并确保网站文件位于`/var/www/html`目录中。 6. 验证配置文件的正确性: 使用以下命令验证Nginx配置文件是否正确: ```bash sudo nginx -t ``` 如果没有任何错误消息,则表示配置文件正确。 7. 重新加载Nginx以使配置更改生效: 使用以下命令重新加载Nginx: ```bash sudo systemctl reload nginx ``` 现在,您已经成功在CentOS 7上配置Nginx。您可以通过浏览器访问您的域名或IP地址来验证Nginx是否正常工作。请确保您的网站文件位于正确的目录,并具有适当的权限。如需更多高级配置,请参考Nginx官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值