禁用 SELINUX

SELinux 是运行于常规 Linux 安全工具之上的一系列附加安全限制措施。相比 Linux 核心所提供的典型配置,SELinux 能够给系统管理员提供更加精细化的控制操作。但是有时候它也会让人很头大。比如,在有 SELinux 启用的情况下,访问服务器上的 Apache 服务可能会出现 403 错误。即使将 Apache 的运行权限设置到最高也不行。

本地测试的服务器当然没必要启用 SELinux,更何况我的 VPS 都没有启用这个服务。所以简单了解了一下之后就决定参考 Frank Wiles 的文章(via)来禁用 SELinux。对于各位网友,如果你对安全性要求较高,在关闭 SELinux 之前最好深入研究一下可能面临的安全风险。

测试 SELinux 服务是否启用

可以使用下面的命令行来测试,看看 SELinux 服务是否正在运行:

selinuxenabled && echo enabled || echo disabled

或者输入命令,

sestatus

返回结果类似于,

# sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: disabled
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 28

顶上一行就显示了是 enabled 的状态。中间显示当前状态(Current mode)是强制(enforcing)。而靠下一行则显示配置文件里的状态(Mode from config file)是禁用(disabled),因为刚刚修改配置文件关闭它了,重启系统后就直接是禁用状态。

或者直接输入,

getenforce

就会得到 SELinux 的运行模式。如果在运行的话,例如,

# getenforce
Enforcing

暂时关闭 SELinux 服务

如果在访问自己的服务器上的 Apache 服务时遇到莫名其妙的无法打开的问题,而此时 Apache 服务又确定是运行良好的,可以暂时关闭 SELinux 来做个测试,看问题是否是由 SELinux 的相关设置造成。

要暂时关闭 SELinux 服务,需要具有 root 权限。

在 CentOS 7 中,可以执行,

setenforce 0

来临时将 SELinux 的模式(Mode)设置为 Permissive,就相当于让它继续处于运行状态,监控和记录信息,但是不采取任何拦截动作,也就相当于临时禁用 SELinux 了。但是重启系统后就会恢复到原来的状态。

还可以随时将它恢复,或者临时启用,

setenforce 1

在 CentOS 6.7 及以前版本,还可以在 root 登录的时候运行下面的命令:

echo 0 > /selinux/enforce

这样就会暂时性的关闭 SELinux,使用命令重新开启或者重起系统之后就会恢复。如果要重新开启,只需要再运行下述命令:

echo 1 > /selinux/enforce

上述命令是通过修改配置文件 /selinux/enforce 的内容为 ‘1’ 或者 ‘0’ 来启用或者关闭 SELinux 服务的。

配置 SELinux 记录警告而不是禁止未经批准的操作

如果不想直接关闭 SELinux,还可以修改配置参数,使其仅仅记录警告信息,而不是直接对操作采取禁止措施。这就是所谓的“许可模式(permissive mode)”。

将 SELinux 更改为许可模式需要修改配置文件。在 Fedora 和 RHEL 系统中,配置文件位于 /etc/selinux/config。将其中的 SELINUX 选项更改为 permissive,如下所示:

SELINUX=permissive

值得注意的是,这种更改只有在系统重新启动之后才会生效。如果不希望重新启动系统,建议使用前一方式暂时关闭 SELinux 服务。

或者如果不想打开编辑配置文件,也可以直接修改,

sed -i 's/SELINUX=.*/SELINUX=permissive/' /etc/selinux/config

彻底关闭 SELinux

要彻底禁用 SELinux,只需将刚才提到的配置文件中 SELINUX 选项设置为 disabled ,如:

SELINUX=disabled

当然也需要重起系统来使该配置生效。

所以,如果想要彻底关闭 SELinux 并且希望立即生效,就要组合一下,例如,

setenforce 0
sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

第一条临时使 SELinux 失效;第二条直接修改配置让它在系统重启后还处于禁用模式。

其它

如果有童鞋偏爱 SELinux 的话,想使用 SELinux 来提高服务器运行的安全性,可以参考 LinuxToy 上的文章进行配置。虽然这篇文章并没有非常详细的介绍相关内容,却针对 Apache 服务做了举例说明。相信该文对于 SELinux 和 Apache 的共存配置有较大帮助。另外,建议动手前先阅读该文的评论部分,也许会让你改变决定也说不定呢。©

本文发表于水景一页。永久链接:<https://cnzhx.net/blog/turn-off-selinux/>。转载请保留此信息及相应链接。

1 条关于 “禁用 SELINUX” 的评论

  1. 引用通告: CentOS 7 / RHEL 7 上安装 LAMP + phpMyAdmin | 水景一页

雁过留声,人过留名

您的电子邮箱地址不会被公开。 必填项已用 * 标注

特别提示:与当前文章主题无关的讨论相关但需要较多讨论求助信息请发布到水景一页讨论区的相应版块,谢谢您的理解与合作!请参考本站互助指南
您可以在评论中使用如下的 HTML 标记来辅助表达: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>