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