一、SELinux三种模式简介
Enforcing:强制模式。代表SELinux在运行中,且已经开始限制domain/type之间的验证关系
Permissive:宽容模式。代表SELinux在运行中,不过不会限制domain/type之间的验证关系,即使验证不正确,进程仍可以对文件进行操作。不过如果验证不正确会发出警告
Disabled:关闭模式。SELinux并没有实际运行
二、getenforce命令
功能:查看当前SELinux的运行模式
三、sestatus命令
功能:查看当前系统上面SELinux的策略,运行模式等信息
命令格式:
sestatus [-vb]
相关参数与选项:
-v:检查列于/etc/sestatus.conf内的文件御锦城的安全上下文
-b:将目前策略的规则布尔值列出,亦即某些规则是否要启动(0/1)之意
演示案例
可以看到当前的策略为targeted。模式为enforcing
四、SELinux的配置文件(/etc/selinux/config)
SELINUX=enforcing:当前SELinux的模式
SELINUXTYPE=targeted:当前SELinux的策略
如果想要修改策略和模式,就更改这个文件里面的内容即可
五、SELinux模式的更改(setenforce命令)
SELinux模式的更改规则:
①不论是从Enforcing或Permissive改为Disabled,还是由Disabled改为Enforcing或Permissive,系统都需要重新启动。因为SELinux是整合到内核中的
②在SELinux已经运行的模式下:只能够在Enforcing和Permissive两种模式之间进行切换,而不能直接关闭SELinux(Disabled),如果你使用getenforce发现当前SELinux模式为Disabled时,请立即到/etc/selinux/config文件中将SELinux改为Enforcing,然后重新启动系统
③如果你从Disable转到启动SELinux的模式时,系统必须针对文件写入安全上下文的信息,因此启动过程会花费不少时间等待重新写入SELinux安全上下文(有时成为SELinux Label),而且在写完之后还要再重新启动一次
④如果你在Enforcing模式,但是可能由于一些设置的问题导致SELinux让某些服务无法正常地运行,此时可以将Enforcing的模式改为宽容(Permissive)的模式,让SELinux只会警告而,而不会直接阻止主体进程的读取权限
setenforce命令格式:
# 转换为Permissive宽容模式
setenforce 0
# 转换为Enforcing强制模式
setenforce 1
注意事项:setenforce无法设置SELinux为Disabled模式
演示案例
六、restorecon -Rv 命令
介绍:
当你从Disabled切换为Enforcing模式时,会有一堆服务无法顺利启动,会跟你说/lib/xxx里面的数据没有权限读取,所以启动失败。原因:大多是重新写入SELinux类型时出错的缘故
解决办法:切换为Permissive宽容模式,然后使用restorecon -Rv / 重新还原所有SELinux的类型,就能解决这个问题