如何在 CentOS 7 上禁用或关闭 SELinux?
介绍
在 Linux 世界中,安全性是系统管理员最关心的问题。增强 Linux 系统安全性的一种方法是使用安全增强型 Linux (SELinux)。
SELinux 是一个强制访问控制 (MAC) 系统,为您的 CentOS 7 服务器提供额外的保护层。它提供精细的访问控制和策略,使系统管理员能够限制用户的操作并保护敏感数据。
检查SELinux的当前状态
SELinux(安全增强型 Linux)是一种安全机制,通过限制进程和用户对某些资源的访问,为您的系统提供额外的保护层。 CentOS 7 默认启用 SELinux。在某些情况下,您可能需要在继续进行任何配置更改之前检查它是否正在运行。
使用 getenforce 命令
检查 SELinux 当前状态的最简单方法是使用 getenforce 命令。此命令显示 SELinux 当前在 CentOS 7 系统上是强制执行、许可还是禁用。要使用此命令,请打开终端窗口并输入 -
getenforce
如果 SELinux 当前正在您的系统上强制执行,则此命令将返回“Enforcing”。如果它在宽容模式(也称为“记录”模式)下运行,它将返回“Permissive”。
如果 SELinux 完全禁用,将返回“Disabled”。需要注意的是,在较新版本的 CentOS 7(例如 CentOS 7.6)上,getenforce 的输出可能会显示“已禁用”,而实际上它并未完全禁用,因为系统安全服务守护进程 (SSSD) 和auditd 等其他功能可能仍然存在即使您在 /etc/sysconfig/selinux 文件中设置了 SELINUX=disabled,也会以强制模式运行。
使用 getenforce 命令可以帮助您确定 SELinux 当前在 CentOS 7 系统上是否处于活动状态及其当前状态。这在解决安全问题或确定是否需要进一步更改配置时非常有用。
暂时禁用 SELinux
有时,您可能需要暂时禁用 SELinux 来解决 CentOS 7 中的特定问题。这可以使用 setenforce 命令来完成,该命令用于更改当前的 SELinux 模式。 setenforce 命令有两种模式:强制模式和许可模式。
强制模式是 SELinux 的默认模式,它强制执行 SELinux 定义的所有安全策略。另一方面,宽容模式仅记录策略违规行为,而不强制执行。在宽容模式下,SELinux 不会阻止任何操作,而是记录它们。
要使用 setenforce 命令在 CentOS 7 中临时禁用 SELinux,请按照以下步骤操作 -
使用root权限登录CentOS 7系统。
打开终端窗口。
键入以下命令来检查 SELinux 的当前状态 -
$ getenforce
输出将显示“强制”或“许可”。如果它显示“Enforcing”,您需要运行以下命令 -
$ setenforce 0
这会将 SELinux 状态设置为宽容模式,这意味着它不会阻止任何操作,而是会记录它们。您可以通过输入确认它已更改 -
$ getenforce
输出现在应显示“Permissive”。
请注意,此更改是暂时的,重新启动后将无法保留。如果您想在 CentOS 7 系统上永久禁用或关闭 SELinux,请继续执行下一部分。
永久关闭 SELinux
有时,您可能想永久关闭 SELinux。这可以通过编辑 /etc/selinux/config 文件来完成。该文件用于设置系统启动时默认的SELinux模式。
编辑 /etc/selinux/config 文件
要编辑 /etc/selinux/config 文件,您必须具有服务器的 root 访问权限。打开 CentOS 7 机器上的终端并输入 -
$ sudo nano /etc/selinux/config
这将在 Nano 编辑器中打开配置文件。查找以“SELINUX=”开头的行。此行的值指示 SELinux 是启用还是禁用 -
# 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”更改为“disabled” -
# 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=disabled
完成此更改后,按 Ctrl+X、Y 和 Enter 键保存并关闭 /etc/selinux/config。请注意,对 /etc/selinux/config 的更改需要重新启动系统才能生效。重新启动 CentOS 7 服务器后,运行 getenforce 命令以确保 SELinux 现已禁用 -
$ getenforce
输出应为“已禁用”。您的 CentOS 7 服务器现在运行时没有 SELinux。
验证 SELinux 是否已禁用或关闭
在 CentOS 7 上禁用或关闭 SELinux 后,验证更改是否已正确应用非常重要。本节将指导您通过一些方法来验证这一点。
方法一:使用getenforce命令
检查 SELinux 当前是否已禁用或暂时关闭的最简单方法是使用 getenforce 命令。此命令显示系统上 SELinux 的当前状态。
要检查 SELinux 的当前状态,请打开终端并输入 -
$ getenforce
如果此命令返回“Disabled”或“Permissive”,则您已成功暂时禁用或关闭 SELinux。但是,如果它返回“Enforcing”,则 SELinux 仍处于启用状态并执行策略。
方法2:检查文件/etc/selinux/config
您还可以通过检查位于 /etc/selinux/config 的配置文件来验证 SELinux 是否已被永久禁用。如果您已正确执行永久禁用 SELinux 的所有步骤,则此文件应包含类似于以下内容的行:
SELINUX=disabled
如果它显示“SELINUX=enforcing”,那么您需要确保在重新启动系统之前正确编辑并保存了该文件。
方法三:使用Sestatus命令
您还可以使用 Sestatus,这是一个用于管理和查询 SELinux 状态的强大工具。
$ sudo sestatus
此命令显示 SELinux 的当前状态并提供附加信息,例如启用的策略和布尔值。如果 SELinux 被禁用或永久关闭,此命令应显示以下内容 -
SELinux status: disabled
如果它返回“SELinux status:enabled”,那么您需要确保在重新启动系统之前正确执行了永久禁用 SELinux 的所有步骤。
结论
虽然禁用或关闭 SELinux 可能会暂时解决 CentOS 7 计算机上的一些问题,但请务必记住,它是一项至关重要的安全功能。 SELinux 通过限制授予进程的访问和权限,为您的系统添加了额外的保护层。