SELinux安装及启动、关闭和查看状态方法详解

在 CentOS 6.x 中,SELinux 是整合到 Linux 的内核当中的,并且是启动的,所以不需要单独安装。不过,现在不再像在 CentOS 5.x 中,所有的 SELinux 工具都是已经安装和配置好的,在 CentOS 6.x 中,虽然 SELinux 的主程序默认已经安装,但是很多的 SELinux 管理工具需要我们手工安装。

SELinux 安装命令如下:

[root@localhost ~]# yum -y install setroubleshoot
[root@localhost ~]# yum -y install setools-console

这两条命令要想正确运行,需要搭建正确的 yum 源。这两个软件包在安装时会依赖安装一系列的软件包,这些软件包中包含了 SELinux 的常用工具。

SELinux的启动管理

在 CentOS 6.x 中,setup 工具已经不能支持 SELinux 的调整了,只能通过 SELinux 配置文件来进行 SELinux 的启动与关闭。

我们打开 SELinux 配置文件来查看一下,如下:

[root@localhost ~]# vi /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing
#指定SELinux的运行模式。有enforcing(强制模式)、permissive(宽容模式)、disabled(不生效)三种模式
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
#指定SELinux的默认策略。有targeted(针对性保护策略,是默认策略)和mls(多级安全保护策略)两种策略

要想关闭和启动 SELinux,只需修改 SELinux 的运行模式即可。三种模式的区别如下:
  • SELINUX=enforcing:强制模式,代表 SELinux 正常运行,所有的策略已经生效。
  • SELINUX=permissive:宽容模式,代表 SELinux 已经启动,但是只会显示警告信息,而并不会实际限制进程访问文件或目录资源。
  • SELINUX=disable:关闭,代表 SELinux 被禁用了。

这里需要注意,如果从强制模式(enforcing)、宽容模式(permissive)切换到关闭模式(disabled),或者从关闭模式切换到其他两种模式,则必须重启 Linux 系统才能生效,但是强制模式和宽容模式这两种模式互相切换不用重启 Linux 系统就可以生效。这是因为 SELinux 是整合到 Linux 内核中的,所以必须重启才能正确关闭和启动。而且,如果从关闭模式切换到启动模式,那么重启 Linux 系统的速度会比较慢,那是因为需要重新写入安全上下文信息。

除可以通过配置文件进行 SELinux 的启动和关闭外,也可以使用命令来进行 SELinux 的运行模式的查询和修改。命令如下:

[root@localhost ~]# getenforce
#查询SELinux的运行模式
Enforcing
#当前的SELinux是强制模式


除可以查询 SELinux 的运行模式之外,也可以修改 SELinux 的运行模式。不过需要注意,setenforce 命令只能让 SELinux 在 enforcing 和 permissive 两种模式之间进行切换。如果从启动切换到关闭,或从关闭切换到启动,则只能修改配置文件,setenforce 命令就无能为力了。

setenforce 命令格式如下:

[root@localhost ~]# setenforce 选项

选项:
  • 0: 切换成 permissive(宽容模式);
  • 1: 切换成 enforcing(强制模式);

例如:

[root@localhost ~]# setenforce 0
#切换成宽容模式
[root@localhost ~]# getenforce
Permissive
[root@localhost ~]# setenforce 1
#切换成强制模式
[root@localhost ~]# getenforce
Enforcing


知道了 SELinux 的启动和关闭方法,那么我们如何查询当前 SELinux 的策略呢?这就要使用 sestatus 命令来查看了,命令如下:

[root@localhost ~]# sestatus
SELinux status: enabled
#SELinux启用
SELinuxfs mount: /selinux
#SELinux数据的挂载位置
Current mode: enforcing
#运行模式是强制模式
Mode from config file: enforcing
#配置文件所指定的模式也是强制模式
Policy version: 24
#策略版本
Policy from config file: targeted
#目前策略是针对性保护策略