目前RHEL SELinux 支持三种模式,分别如下:
1)enforcing:强制模式
代表 SELinux 运作中,且已经正确的开始限制 domain/type 了;
2)permissive:宽容模式:
代表 SELinux 运作中,不过仅会有警告讯息并不会实际限制 domain/type 的存取。这种模式可以运来作为 SELinux 的 debug 之用;
3)disabled:关闭,SELinux 并没有实际运行。
二、查看当前的模式
# getenforce
Enforcing <==表示当前的模式为Enforcing
Disabled <==表示禁用SElinux
三、查看SElinux的Policy
# sestatus
SELinux status: enabled <==是否启动SELinux
SELinuxfs mount: /selinux <==SELinux相关文件挂载点
Current mode: enforcing <==当前的模式
Mode from config file: enforcing <==配置文件指定的模式,即/etc/selinux/config中配置的模式。
Policy version: 21
Policy from config file: targeted <==当前前SELINUXTYPE值。
四、永久修改SElinux模式
#vi /etc/selinux/config
SELINUX=enforcing <==调整为 enforcing|disabled|permissive
SELINUXTYPE=targeted <==目前仅有 targeted 与 mls可选
##########
SELINUX=disabled 禁用SELinux
SELINUX=enforcing 启用SELinux
##########
五、SElinux模式转换
需要注意的是,如果改变了SElinux模式则需要重启机器,这是因为SELinux 是整合到核心里面去的,你只可以在SELinux运行时切换成为强制 (enforcing)或宽容(permissive)模式,不能够直接关闭
以下SElinux模式转换必须重启机器,SELinux关闭 (disable) 的状态到开启的状态也需要重新启动系统。
enforcing -> disabled
permissive -> disabled
disabled -> enforcing
disabled -> permissive
在系统不重启时只能在enforcing<->permissive之间转换。
root@# setenforce [0|1]
选项与参数:
0 :转成 permissive 宽容模式;
1 :转成 Enforcing 强制模式
e.g. :将 SELinux 在 Enforcing 与 permissive 之间切换与查看
[root@www ~]# setenforce 0
[root@www ~]# getenforce
Permissive
[root@www ~]# setenforce 1
[root@www ~]# getenforce
Enforcing
六、查看已启动程序的type设定
[root]# ps aux -Z
七、应用场景举例:
发现服务一启动,马上停止,在网上查找资料,找到安装时要先禁用SELinux,再安装MySQL,步骤是:
1)关闭SELinux,重启系统;
2)安装MySQL(MySQL server应该可以启动了);
3)启用SELinux,重启系统,之后MySQL server就可以正常启动了。