Linux中SELinux三种模式的启动、关闭与查看方式,


目录
  • SELinux三种模式的启动、关闭与查看
  • 查看SELinux模式
  • 查看SELinux的策略
  • SELinux的启动与关闭
    • 让SELinux在Enforcing与Permissive之间切换
  • 总结

    SELinux三种模式的启动、关闭与查看

    目前SELinux依据启动与否,共有三种模式,分别如下:

    • Enforcing:强制模式,代表SELinux运行中,且已经正确开始限制domain/type
    • Permissive:宽容模式,代表SELinux运行中,不过仅会有警告信息并不会实际限制domain/type的读写(这种模式可以用来作为SELinux的debuug之用)
    • Disabled:关闭模式,SELinux并没有实际运行

    我们要知道,并不是所有的进程都会被SELinux管制,所以我们需要知道进程有没有受限(confined)

    举例来说:

    我们查看一下crond和bash这两个进程是否被限制

     我们可以看到crond确实是受限的主体进程,而bash因为是本机进程,就是不受限(unconfined_t)的类型。也就是说bash是直接去判断rwx

    三种模式的运行状态:

    • Disabled的模式,那么SELinux将不会运行,受限的进程也不会经过SELinux,直接去判断rwx
    • Permissive的模式,不会阻止主体进程,但是当没有通过策略规则或安全上下文判断时,此读写操作将会被记录起来(log),可作为未来检查问题的判断依据
    • Enforcing的模式,就是将受限主体进入规则比对、安全上下文比对的流程,若失败,就直接阻止主体进程的读写操作,并且将它记录下来。如果通通没问题就进入到rwx的判断

    查看SELinux模式

    使用getenforce查看

    查看SELinux的策略

    sestatus 【-vb】

    选项与参数:

    • -v:检查列于/etc/sestatus.conf内的文件与进程的安全上下文内容
    • -b:将目前策略的规则布尔值列出

    SELinux的启动与关闭

    SELinux的配置文件为/etc/selinux/config

    其中非注释的内容只有两行为:

    除了强制模式与宽容模式之间相互转换之外,其他的模式变换都需要直接在配置文件中修改,并且变换模式后,都需要重新启动

    让SELinux在Enforcing与Permissive之间切换

    setenforce 【0/1】

    选项与参数:

    • 0:转为Permissive宽容模式
    • 1:转为Enforcing强制模式

    不过请注意,setforce无法再Disabled模式下切换模式

     

    补充:

    问题:

    • 在某些特殊情况下
    • 我们从Disabled切换到Enforcing之后
    • 有一大堆服务不能顺利启动
    • 并且错误为/lib/xxx里面的数据没有权限读取
    • 这是因为重新写入SELinux类型出错
    • 使用Permissive就没有这个错误

    处理:

    • 在Permissive的状态下
    • 使用【restorecon -Rv/】重新还原所有SELinux的类型就能解决这个问题

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持PHP之友。

    您可能感兴趣的文章:
    • Linux中如何开启或关闭SELinux
    • Linux如何启动SELinux
    • Linux之CentOS7下如何关闭SELINUX
    • Linux中SELinux、Shell简介、touch命令的应用小结
    • 开启Selinux遇到的坑及解决

    相关内容