如何在 CentOS 7 上禁用或关闭 SELinux?

linuxoperating systemopen source

简介

在 Linux 世界中,安全性是系统管理员最关心的问题。增强 Linux 系统安全性的一种方法是使用安全增强型 Linux (SELinux)。

SELinux 是一个强制访问控制 (MAC) 系统,可为您的 CentOS 7 服务器提供额外的保护。它提供精细的访问控制和策略,使系统管理员能够限制用户的操作并保护敏感数据。

检查 SELinux 的当前状态

SELinux(安全增强型 Linux)是一种安全机制,通过限制进程和用户对某些资源的访问,为您的系统提供额外的保护。CentOS 7 默认启用 SELinux。在某些情况下,您可能需要在进行任何配置更改之前检查它是否正在运行。

使用 getenforce 命令

检查 SELinux 当前状态的最简单方法是使用 getenforce 命令。此命令显示您的 CentOS 7 系统上的 SELinux 当前处于强制、宽容还是禁用状态。要使用此命令,请打开终端窗口并输入:-

getenforce

如果 SELinux 当前在您的系统上处于强制状态,此命令将返回"Enforcing"。如果它以宽容模式(也称为"已记录"模式)运行,它将返回"Permissive"。

如果 SELinux 完全禁用,将返回"Disabled"。需要注意的是,在较新版本的 CentOS 7(例如 CentOS 7.6)中,getenforce 的输出可能会显示"disabled",但实际上并未完全禁用,这是因为即使您在 /etc/sysconfig/selinux 文件中设置了 SELINUX=disabled,其他功能(例如系统安全服务守护进程 (SSSD) 和 auditd)仍可能以强制模式运行。

使用 getenforce 命令可以帮助您确定 SELinux 当前在 CentOS 7 系统上是否处于活动状态及其当前状态。这在排查安全问题或确定是否需要进一步更改配置时非常有用。

暂时禁用 SELinux

有时,您可能需要暂时禁用 SELinux 来排查 CentOS 7 中的特定问题。这可以使用 setenforce 命令来完成,该命令用于更改当前的 SELinux 模式。 setenforce 命令有两种模式:强制 (enforcing) 和宽容 (permissive)。

强制 (enforcing) 模式是 SELinux 的默认模式,它会强制执行 SELinux 定义的所有安全策略。另一方面,宽容 (permissive) 模式仅记录策略违规行为,而不会强制执行。在宽容 (permissive) 模式下,SELinux 不会阻止任何操作,而是会将其记录下来。

要在 CentOS 7 中使用 setenforce 命令暂时禁用 SELinux,请按照以下步骤操作 -

以 root 权限登录 CentOS 7 系统。

打开终端窗口。

输入以下命令检查 SELinux 的当前状态 -

$ getenforce

输出将显示"Enforcing"或"Permissive"。如果显示"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 

To turn off SELinux permanently, change "enforcing" to "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

输出应为"Disabled"。您的 CentOS 7 服务器现在已在未启用 SELinux 的情况下运行。

验证 SELinux 是否已禁用或关闭

在 CentOS 7 上禁用或关闭 SELinux 后,务必验证更改是否已正确应用。本节将指导您完成一些验证方法。

方法 1:使用 getenforce 命令

检查 SELinux 当前是否已禁用或暂时关闭的最简单方法是使用 getenforce 命令。此命令会显示您系统上 SELinux 的当前状态。

要检查 SELinux 的当前状态,请打开终端并输入 -

$ getenforce

如果此命令返回"Disabled"或"Permissive",则表示您已成功暂时禁用或关闭 SELinux。但是,如果返回"Enforcing",则表示 SELinux 仍然处于启用状态并正在执行策略。

方法 2:检查文件 /etc/selinux/config

您还可以通过检查位于 /etc/selinux/config 的配置文件来验证 SELinux 是否已被永久禁用。如果您已正确执行永久禁用 SELinux 的所有步骤,则此文件应包含类似于以下内容的行:-

SELINUX=disabled

如果它显示的是"SELINUX=enforcing",则您需要确保在重启系统之前正确编辑并保存了此文件。

方法 3:使用 Sestatus 命令

您还可以使用 Sestatus,这是一个用于管理和查询 SELinux 状态的强大工具。

$ sudo sestatus

此命令显示 SELinux 的当前状态并提供其他信息,例如已启用的策略和布尔值。如果 SELinux 已禁用或永久关闭,此命令应显示以下内容 -

SELinux 状态:已禁用

如果返回的是"SELinux 状态:已启用",则您需要确保在重启系统之前已正确执行了永久禁用 SELinux 的所有步骤。

结论

虽然禁用或关闭 SELinux 可能会暂时解决 CentOS 7 计算机上的一些问题,但请务必记住,它是一项至关重要的安全功能。SELinux 通过限制授予进程的访问权限,为您的系统增加了一层额外的保护。


相关文章


有用资源