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 的共存配置有较大帮助。另外,建议动手前先阅读该文的评论部分,也许会让你改变决定也说不定呢。©
本文发表于水景一页。永久链接:<http://cnzhx.net/blog/turn-off-selinux/>。转载请保留此信息及相应链接。
引用通告: CentOS 7 / RHEL 7 上安装 LAMP + phpMyAdmin | 水景一页