zoukankan      html  css  js  c++  java
  • SELinux 宽容模式(permissive) 强制模式(enforcing) 关闭(disabled) 几种模式之间的转换

    在CentOS6.2 中安装intel 的c++和fortran 的编译器时,遇到来一个关于SELinux的强制模式不可执行的情况,
    需要关闭SELinux 或者 将enforcing改为 permissive 模式,查询来一些资料后,先对SELinux的几种模式,以及其之间的关系和转换方法做一小结,以备以后查看和学习。

    SELinux 的启动、关闭与查看 

    1、并非所有的 Linux distributions 都支持 SELinux
    目前 SELinux 支持三种模式,分别如下:

    •enforcing:强制模式,代表 SELinux 运作中,且已经正确的开始限制 domain/type 了; •permissive:宽容模式:代表 SELinux 运作中,不过仅会有警告讯息并不会实际限制 domain/type 的存取。这种模式可以运来作为 SELinux 的 debug 之用;
    •disabled:关闭,SELinux 并没有实际运作。

    2,查看SELinux的模式
    # getenforce Enforcing <==就显示出目前的模式为 Enforcing
    3,查看 SELinux 的政策 (Policy)?
    [root@master oracle]# sestatus
    SELinux status: enabled <==是否启动 SELinux
    SELinuxfs mount: /selinux <==SELinux 的相关文件资料挂载点
    Current mode: enforcing <==目前的模式
    Mode from config file: enforcing <==设定档指定的模式
    Policy version: 21
    Policy from config file: targeted <==目前的政策为何?
    4,通过配置文件调整SELinux的参数 
    [root@www ~]# vi /etc/selinux/config
    SELINUX=enforcing <==调整 enforcing|disabled|permissive
    SELINUXTYPE=targeted <==目前仅有 targeted 与 strict

    5,SELinux 的启动与关闭
    【重要常识】上面是预设的政策与启动的模式!你要注意的是,如果改变了政策则需要重新开机;如果由 enforcing 或 permissive 改成 disabled ,或由 disabled 改成其他两个,那也必须要重新开机。这是因为 SELinux 是整合到核心里面去的, 你只可以在 SELinux 运作下切换成为强制 (enforcing) 或宽容 (permissive) 模式,不能够直接关闭 SELinux 的!
    同时,由 SELinux 关闭 (disable) 的状态到开启的状态也需要重新开机啦!所以,如果刚刚你发现 getenforce 出现 disabled 时, 请到上述文件修改成为 enforcing 吧!
    【重点】如果要启动SELinux必须满足以下两个点: 
    所以,如果你要启动 SELinux 的话,请将上述的 SELINUX=enforcing 设定妥当,并且指定 SELINUXTYPE=targeted 这一个设定, 并且到 /boot/grub/menu.lst 这个文件去,看看核心有无关闭 SELinux 了呢?

    [root@www ~]# vi /boot/grub/menu.lst
    default=0
    timeout=5
    splashimage=(hd0,0)/grub/splash.xpm.gz
    hiddenmenu
    title CentOS (2.6.18-92.el5)
          root (hd0,0)
          kernel /vmlinuz-2.6.18-92.el5 ro root=LABEL=/1 rhgb quiet selinux=0
          initrd /initrd-2.6.18-92.el5.img

    # 如果要启动 SELinux ,则不可以出现 selinux=0 的字样在 kernel 后面!
    【问题】通过上面的学习我们知道,如果将启动着的SELinux改为禁用,需要重启电脑,我们不想重启电脑又不想开启SELinux该怎么办呢?
    【答案】将强制模式改为宽松模!
    [root@www ~]# setenforce [0|1]
    选项与参数:
    0 :转成 permissive 宽容模式;
    1 :转成 Enforcing 强制模式

    范例一:将 SELinux 在 Enforcing 与 permissive 之间切换与查看
    [root@www ~]# setenforce 0
    [root@www ~]# getenforce Permissive
    [root@www ~]# setenforce 1
    [root@www ~]# getenforce Enforcing

    6,查看已启动程序的type设定
    [root@master oracle]# ps aux -Z
    LABEL USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
    system_u:system_r:init_t root 1 0.0 0.4 2060 520 ? Ss May07 0:02 init [5 system_u:system_r:kernel_t root 2 0.0 0.0 0 0 ? S< May07 0:00 [migra] system_u:system_r:kernel_t root 11 0.0 0.0 0 0 ? S< May07 0:00 [kacpi] system_u:system_r:auditd_t root 4022 0.0 0.4 12128 560 ? S<sl May07 0:01 auditd system_u:system_r:auditd_t root 4024 0.0 0.4 13072 628 ? S<sl May07 0:00 /sbin/a system_u:system_r:restorecond_t root 4040 0.0 4.4 10284 5556 ? Ss May07 0:00 /usr/sb

    说明:其实这些东西我们都不用管,都是SELinux内置的。只要学会在强制和宽松模式间转换就行了!



    小结附:

    关闭SELinux的方法:
    修改/etc/selinux/config文件中的SELINUX="" 为 disabled ,然后重启。
    如果不想重启系统,使用命令setenforce 0
    注:
    setenforce 1 设置SELinux 成为enforcing模式
    setenforce 0 设置SELinux 成为permissive模式
    在lilo或者grub的启动参数中增加:selinux=0,也可以关闭selinux

    #---------------------------------------------------------------
    查看selinux状态:
    /usr/bin/setstatus -v
    如下:
    SELinux status:  enabled
    SELinuxfs mount:  /selinux
    Current mode:  permissive
    Mode from config file:  enforcing
    Policy version:  21
    Policy from config file:  targeted
    getenforce/setenforce查看和设置SELinux的当前工作模式
    #-----------------------------------------------------------------------
    发现服务一启动,马上停止,在网上查找资料,找到安装时要先禁用SELinux,再安装MySQL,步骤是:

    1. 关闭SELinux,重启系统;
    2. 安装MySQL(MySQL server应该可以启动了);
    3. 启用SELinux,重启系统,之后MySQL server就可以正常启动了。

    启用禁用SELinux的方法是:

    vi /etc/selinux/config(也有人说是/etc/sysconfig/selinux文件,其实两个之间是链接关系,随便改其中一个,另一个也改了)

    SELINUX=disable 禁用SeLinux

    SELINUX=enforcing 启用SeLinux


    CentOS系统如何快速关闭SELINUX


    SELinux是一种基于 域-类型 模型(domain-type)的强制访问控制(MAC)安全系统,它由NSA编写并设计成内核模块包含到内核中,相应的某些安全相关的应用也被打了 SELinux的补丁,最后还有一个相应的安全策略。虽然CentOS系统相比较而言相对安全稳定。我在长期的linux实践中总结的经验 是:SElinux是php的天敌。

    我们经常由于CentOS系统默认系统的安全性配置导致些莫名其妙的问题,比如SElinux本来是用于安全子系统的权限控制,可是搞不好就发现限制多多,我们可以用如下方法快速关闭SElinux。

    /usr/sbin/setenforce 0 立刻关闭SELINUX

    /usr/sbin/setenforce 1 立刻启用 SELINUX

    加到系统默认启动里面

    echo "/usr/sbin/setenforce 0" >> /etc/rc.local

    这样,我们在不需要在CentOS系统中开启SELINUX的时候,就可以快速的去关闭了,以及在需要的时候,在开启它。

  • 相关阅读:
    Ubuntu 14.04 卸载通过源码安装的库
    Ubuntu 14.04 indigo 相关依赖
    Ubuntu 14.04 indigo 安装 cartographer 1.0.0
    Ubuntu 14.04 改变文件或者文件夹的拥有者
    安装cartographer遇到Unrecognized syntax identifier "proto3". This parser only recognizes "proto2"问题
    Unrecognized syntax identifier "proto3". This parser only recognizes "proto2". ”问题解决方法
    查看所有用户组,用户名
    1卸载ROS
    Ubuntu14.04 软件安装卸载
    Ubuntu14.04系统显示器不自动休眠修改
  • 原文地址:https://www.cnblogs.com/gailuo/p/3805223.html
Copyright © 2011-2022 走看看