SELinux三种模式

一、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的类型,就能解决这个问题

原文地址:https://www.cnblogs.com/quqibinggan/p/13289693.html