如何在 RHEL/CentOS 7 中修复 firewall-cmd 命令未找到错误?


简介

Firewall-cmd 是一个功能强大的命令行实用程序,允许您配置 Red Hat Enterprise Linux (RHEL) 和 CentOS 7 上的防火墙。它用于管理 FirewallD 守护进程,该守护进程负责管理 iptables 防火墙规则。

但是,一些用户报告在尝试发出与 FirewallD 相关的命令时遇到错误消息“firewall-cmd: command not found”。对于依赖 FirewallD 的用户来说,此错误可能令人沮丧,因为它使得无法使用 Firewall-cmd 修改防火墙规则。

此错误的原因通常是缺少或损坏的 Firewalld 软件包安装或系统路径变量问题。幸运的是,您可以通过多种方法解决此错误,并使用 Firewall-cmd 重新高效地管理防火墙。

了解错误

错误原因的解释

当系统无法找到 firewall-cmd 命令时,在 RHEL/CentOS 7 中会出现 firewall-cmd 命令未找到错误。这可能由于多种原因导致,例如缺少或安装不完整的 Firewalld 软件包、系统路径变量不正确或系统软件包已过时。Firewalld 是一种服务守护进程,它提供一个动态管理的防火墙,并支持网络/防火墙区域以配置各种互联网连接。

如果此服务未正确安装,则可能会导致系统安全和网络访问出现问题。Firewall-cmd 是在 RHEL/CentOS 7 环境中管理和修改防火墙的重要工具。

用户通常在尝试从终端运行 firewall-cmd 命令但收到错误消息指示命令未找到时遇到此错误。此错误通常会导致用户认为 FirewallD 服务可能已停止或以某种方式出现故障,但通常表示与设置或安装问题相关的一个简单问题。

如何识别系统中是否存在错误

要识别您的 RHEL/CentOS 7 服务器上是否遇到 firewall-cmd 命令未找到错误,请尝试在终端中运行以下命令:

$ sudo systemctl status firewalld.service 
$ which firewall-cmd 
$ whereis firewalld

如果您看到任何指示 FirewallD 服务或 Firewall-CMD 软件包丢失或不活动的消息,则确认您遇到了此问题。

如果这两个服务都显示处于活动状态并正常运行,请使用 yum info firewalld 检查系统上是否安装了 Firewalld 的过时版本。通过键入 echo $PATH 检查包含 FirewallD 可执行文件的必要目录是否都包含在 $PATH 中。

修复错误

方法 1:安装 FirewallD 软件包

如果 firewall-cmd 命令未找到错误是由于缺少 Firewalld 软件包导致的,我们可以通过使用 Yum 软件包管理器安装软件包来修复它。首先,我们需要打开终端并运行 Yum update 命令以确保所有系统软件包都已更新并是最新的。接下来,我们需要运行一个命令来安装 Firewalld 软件包,如下所示:

$ sudo yum install firewalld -y 

以上命令将下载并安装 Firewalld 软件包及其依赖项。成功安装后,重新启动系统以使更改生效。

确认成功安装的步骤:

重新启动系统后,我们可以通过在终端中运行一个简单的命令来验证 Firewalld 是否已成功安装:

$ systemctl status firewalld 

如果输出显示 firewalld 服务的状态为“Active (running)”,则表示安装成功。

方法 2:检查系统路径变量

如果 Firewalld 已安装在您的系统上,但您仍然遇到 firewall-cmd 命令未找到错误,则可能是由于系统路径变量不正确或不可用。在这种情况下,我们需要检查路径变量设置并相应地更新它们。系统路径变量如何影响 firewall-cmd 命令功能的解释:

Linux 系统中的路径变量定义了可执行文件的位置,这些可执行文件可以从 Linux 机器上的任何位置执行,而无需指定其完整的路径位置。因此,如果它们设置不正确或缺少一些重要的路径(如 /usr/sbin/),您在执行 firewall-cmd 等命令时可能会遇到问题。

如何检查和更新系统路径变量的步骤:要检查 Firewalld 相关的系统路径变量是否存在任何问题,我们需要在终端中运行以下命令:

$ echo $PATH 

以上命令将显示当前 PATH 变量设置。如果它不包含 /usr/sbin/,则需要添加此路径。

我们可以通过编辑 .bashrc 文件来做到这一点,该文件控制用户的终端环境。要编辑 .bashrc 文件,我们需要在终端中运行以下命令:

$ nano ~/.bashrc 

在此文件中,转到其内容的末尾,并添加一行“export PATH=$PATH:/usr/sbin/”,然后保存它。关闭并重新打开终端。

方法 3:重新安装 Firewalld 软件包

如果以上两种方法都无法修复 firewall-cmd 命令未找到错误,则重新安装 Firewalld 软件包可能是我们的最后手段。此方法将确保重新安装与 Firewalld 相关的所有文件。

使用 Yum 软件包管理器重新安装 Firewalld 软件包的详细指南:我们可以首先使用以下命令清理与 firewalld 相关的任何剩余文件

$ sudo yum remove firewalld -y

下一步是像之前一样使用 yum install 再次安装 firewalld。

$ sudo yum install firewalld -y

重新安装成功后的验证步骤

通过以上步骤重新安装 firewalld 后,验证它是否已正确安装。我们可以通过在终端中运行一个简单的命令来验证 Firewalld 是否已成功安装:

$ systemctl status firewalld 

如果您看到 firewall-cmd 服务的状态为“Active (running)”,则表示重新安装成功。

其他提示和技巧

更新系统软件包

保持系统软件包更新对于防止 firewall-cmd 错误至关重要。过时的软件可能会导致与 FirewallD 软件包的兼容性问题,从而导致在运行 firewall-cmd 工具时出现命令未找到错误。

要更新系统软件包,您可以使用 yum 软件包管理器。要更新系统上的所有软件包,只需输入以下命令:

sudo yum update

此命令将检查所有已安装软件包的可用更新,并提示您安装它们。请注意,更新某些软件包可能需要重新启动系统。

在启动时启用 FirewallD 服务

在启动时启用 FirewallD 服务可确保每次重新启动系统时它都会自动启动。这很重要,因为如果服务未启动,您将收到 firewall-cmd 命令未找到错误,因为将不会有任何活动的防火墙服务正在运行。

要在启动时启用 FirewallD 服务,请执行以下步骤:

  • 打开一个终端窗口。

  • 输入以下命令并按 Enter 键:

sudo systemctl enable firewalld.service
  • 如果出现提示,请输入您的 root 密码。

  • 以上命令将在启动时启用 Firewalld。

  • 您可以通过运行以下命令来验证 Firewalld 是否已成功启用:

sudo systemctl is-enabled firewalld.service

如果返回“enabled”,则 Firewalld 已成功配置为在启动时启动。

结论

修复 firewall-cmd 命令未找到错误可能会令人沮丧,但希望通过本指南,您已找到适合您的解决方案。请务必定期更新系统软件包,检查系统路径变量,并在必要时重新安装 FirewallD 软件包。

此外,在启动时启用 FirewallD 服务对于防止将来出现 firewall-cmd 命令未找到错误至关重要。通过遵循这些提示和技巧并保持系统的维护警惕,您可以避免在 RHEL/CentOS 7 上使用 Firewalld 时出现的许多常见问题。

更新于: 2023年6月12日

5K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告