Selinux给nginx静态文件授权目录

背景:在我们安装好nginx之后,nginx默认访问题是OK的,但配置了自己的网页静态html之后,访问就变成了403,无法访问,检查了nginx所有权限都是对的,如(1)nginx启动用root,(2)网页html路径都存在,(3)网页html路径对应的nginx启动用户都有访问权限;这个时间自己的网页还报403,肯定是Selinux安全做了拦截,Selinux是Linux最重要的安全组件,是美国国家安全局开发,对于生产环境,不能直接禁用,禁用了,就降低了服务器的安全性

检查Selinux状态

sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      31

为enablee,为在运行状态

一、查看nginx进程
 ps -efZ | grep nginx
system_u:system_r:httpd_t:s0    root      1178     1  0 09:24 ?        00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
system_u:system_r:httpd_t:s0    root      1179  1178  0 09:24 ?        00:00:00 nginx: worker process
system_u:system_r:httpd_t:s0    root      1180  1178  0 09:24 ?        00:00:00 nginx: worker process
system_u:system_r:httpd_t:s0    root      1181  1178  0 09:24 ?        00:00:00 nginx: worker process
system_u:system_r:httpd_t:s0    root      1182  1178  0 09:24 ?        00:00:00 nginx: worker process
system_u:system_r:httpd_t:s0    root      1183  1178  0 09:24 ?        00:00:00 nginx: worker process
system_u:system_r:httpd_t:s0    root      1184  1178  0 09:24 ?        00:00:00 nginx: worker process
system_u:system_r:httpd_t:s0    root      1185  1178  0 09:24 ?        00:00:00 nginx: worker process
system_u:system_r:httpd_t:s0    root      1186  1178  0 09:24 ?        00:00:00 nginx: worker process
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 root 3566 1863  0 10:19 pts/1 00:00:00 grep --color=auto nginx

注意此时进程对应的是httpd_t

二,查看nginx自己可以访问的目录
cd /usr/share/nginx/html
ls -Z
-rw-r--r--. root root system_u:object_r:httpd_sys_content_t:s0 50x.html
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 aaaa
-rw-r--r--. root root system_u:object_r:httpd_sys_content_t:s0 index.html
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 my.txt

关键点,此时nginx可以正常访问的httpd_sys_content_t,我们需要将我们的网站目录也要改成httpd_sys_content_t,即可以访问了,自己用ls -z命令查看自己的目录,肯定不是httpd_sys_content_t,

三,开始动手了

1、安装policycoreutils-python工具

yum -y install policycoreutils-python

2、修改目录/home/www

semanage fcontext -a -t httpd_sys_content_t '/home/www(/.*)?'

3、刷新/home/www

restorecon -R /home/www

4、查看 

cd /home/wwww
ls -Z

此时就可以正常访问网站了

四、补充:Selinux给nginx可调用端口授权,用如下命令
setsebool -P httpd_can_network_connect 1

你可能感兴趣的:(nginx,前端,服务器)