使用 sudo 运行 systemctl 会抛出“执行操作失败:没有此文件或目录”

使用 sudo 运行 systemctl 会抛出“执行操作失败:没有此文件或目录”

我正在尝试使用以下命令禁用 Azure 上 CentOS7.3 上的防火墙:

sudo systemctl disable iptables-services firewalld

不幸的是我收到以下错误:

"Failed to execute operation: No such file or directory"

有趣的是,当我不使用 sudo 运行该程序时,操作系统似乎正在查找文件,并且我得到以下信息:

==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-unit-files ===
Authentication is required to manage system service or unit files.
Authenticating as: root

但是我的身份验证失败(因为 root 帐户被禁用,我使用 SSH 密钥登录)。

对于如何继续前进的任何建议都将不胜感激:)

答案1

我认为您可能对 iptables 服务使用了错误的服务名称。

另外,如果你有一个默认的 centos 安装,我会假设防火墙已经到位(而不是 iptables _service)——所以如果你真的想停止所有的防火墙,可能systemctl stop firewalld现在就可以这样做(systemctl disable firewalld如果你真的就是想这么做)。

最简单的方法可能是确认该部分是否正确:

sudo systemctl | grep iptable

错误消息的原因是,在 systemd 的任何搜索路径中均未找到名为 iptables-services.service 的单元文件。

快速说明一下:

sudo systemctl status nosuchthing Unit nosuchthing.service could not be found.

与确实存在的事物相比:

sudo systemctl status sshd sshd.service - OpenSSH server daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)

顺便说一下,所显示的路径并不是 systemd 查看的唯一路径。

除非您这样做是为了安装不同的防火墙管理器/前端,否则我倾向于建议保留防火墙,并打开您需要的端口。

Firewalld 相当简单(参见文档:http://www.firewalld.org/), 打开特定端口很简单(再次假设默认为 centos7):sudo firewall-cmd --zone public --add-port=PORT/PROTO --permanent && sudo firewall-cmd reload

相关内容