配置SELinux策略让Nginx进程能够访问虚拟主机目录文件

目前多数Linux系统自带的SELinux默认状态是enforcing,新配置虚拟主机Nginx无法访问目录文件。

即使把访问权限设为最高777,也无济于事,这根本不是同一个方面的概念,SELinux管的是进程访问权限,而操作系统管的是用户访问文件权限。

访问网站会得到头疼的【502 Bad Gateway】。

网上多数博文是直接永久关掉SELinux,把状态改为disabled,这偏激的做法太不负责了。

...
#SELINUX=enforcing
SELINUX=disabled
...

推荐配置SELinux策略让Nginx进程能够访问虚拟主机目录文件,分两步:

  1. httpd访问网络配置
$ sudo setsebool -P httpd_can_network_connect 1

一般执行这一条命令就行了,如果出现Access denied或其他情况,接着用下面第二条命令。

2.httpd访问用户内容

$ sudo setsebool -P httpd_read_user_content 1

说明:setsebool命令是用来修改SElinux策略内各项规则的布尔值,可选项很多。例如还有让httpd访问用户主目录:

$ sudo setsebool -P httpd_enable_homedirs 1

SELinux配置文件:/etc/selinux/config

命令:

$ getenforce           // 查看状态
$ setenforce 1         // 设置状态 1开启(Enforce),0关闭(Permissive)

参考资料

  • https://blog.90.vc/archives/27
  • http://www.linuxboy.net/linuxjc/30828.html

(版权归cpury.com所有,转载请注明出处。)