SELinux
前两天弄了一台配置不错的台式机,从centos官网下载了ISO镜像文件,然后找了一个U盘做成启动盘。系统安装完毕后,安装了开发环境(PHP7 & MariaDB & Nginx),然后把手头项目部署上去。但是页面显示500错误,提示没有权限访问runtime目录,于是我立马想到了目录权限的问题。见鬼的是,当我把整个项目目录设置为777,用户属主也设置为当前运行的用户时,仍然提示这个错误。
接着就是google搜索,各种尝试,然并卵。。。然后放弃。
第二天继续尝试,无意间发现SELinux这个东西,检查了一下搭建的服务器,还真是开启了SELinux,于是关掉,重启,终于正常了。那么什么是SELinux呢?
概念
SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。SELinux 默认安装在 Fedora 和 Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到。
启动、查看和关闭
目前 SELinux 支持三种模式,分别如下:
- enforcing: 强制模式, 代表SELinux运作中,且已经正确的开始限制domain/type了;
- permissive: 宽容模式, 代表SELinux运作中,不过仅会有警告讯息并不会实际限制domain/type的存取。这种模式可以运来作为SELinux的debug之用;
- disabled: 关闭,SELinux并没有实际运作。
查看SELinux的模式
1 | [root@localhost ~]# getenforce |
查看SELinux的策略(Policy)
1 | [root@localhost ~]# sestatus |
通过配置文件调整SELinux的参数
1 | [root@localhost ~]# vi /etc/selinux/config |
SELinux的启动与关闭
上面是预设的策略与启动的模式!如果改变了策略则需要重新开机;如果由enforcing或permissive改成disabled,或由disabled改成其他两个,那也必须要重新开机。这是因为SELinux是整合到核心里面去的,你只可以在SELinux运作下切换成为强制enforcing或宽容permissive模式,不能够直接关闭SELinux的!
同时,由SELinux关闭disable的状态到开启的状态也需要重新开机!所以,如果刚刚你发现getenforce 出现disabled时, 请到上述文件修改成为enforcing吧!
更多关于SELinux的设置,可参考 SELinux 的启动、关闭与查看