我使用以下命令在 CentOS 服务器中添加了一项新服务:
firewall-cmd --permanent --add-service=wiremock
sudo firewall-cmd --reload
然后我通过删除它
firewall-cmd --permanent --remove-service=wiremock
sudo firewall-cmd --reload
当我这样做时firewall-cmd --get-services
,我仍然可以返回列表中枚举的服务。任何想法?
答案1
这手册页对这些选项有点模糊,但--add-service
和--remove-service
选项实际上用于启用或禁用特定的firewalld服务。请参阅Fedora 维基页面以获得更清晰的示例。
另一方面,该--get-services
选项返回在该特定系统上预定义的防火墙服务列表。启用/禁用服务对此列表没有影响,因为它基于定义这些服务的 XML 文件的发现。
在您的情况下,您应该wiremock.xml
在/usr/lib/firewalld
目录或/etc/firewalld
.删除此特定 XML 文件将取消列出该服务。如果您自己没有添加此服务定义,您应该首先检查它来自哪里。如果它作为软件包的一部分提供,则重新安装/更新该软件包将恢复该文件。
答案2
如果您使用 创建了新服务firewall-cmd --permanent --new-service=my-service
,则服务定义 xml 文件将位于/etc/firewalld/services/
.删除该文件会将其从 等中的列表中删除--get-services
。 通常, 中的文件/usr/lib/firewalld/services/
应该只是由firewalld 系统软件包安装的文件。
我还没有找到使用firewall-cmd删除此类创建的服务的方法。