有没有办法在不使用 sudo 的情况下检查防火墙中打开的端口?

有没有办法在不使用 sudo 的情况下检查防火墙中打开的端口?

我注意到甚至检查 的状态firewalld似乎也需要sudo.我希望保持该脚本的权限尽可能低,因此,我希望用户能够以普通用户的身份检查端口状态。如有必要,他们可以请求升级至sudo

是否可以在基于 RHEL 的系统上实现这一目标,或者您是否需要sudo全部实现?

答案1

维苏多

要使用此命令检查开放端口firewalld需要管理权限 sudo。

这不是一个非常干净的方法,但您可以sudoers使用以下方法编辑文件:

sudo visudo

添加此内容并替换USER为您要授予权限的用户名:

<USER> ALL=(root) NOPASSWD: /usr/bin/firewall-cmd --list-ports

这将授予USER执行该firewall-cmd --list-ports命令的权限。

修改系统配置和授予权限时一定要小心!

如何列出 Firewalld 中的开放端口

在 CentOS7 中使用 firewalld 显示开放端口列表

退出/保存编辑到 sudoers 文件?

如何在 Linux 中编辑 Sudoers 文件

如何使用 Sudo 和 Sudoers 文件

设定值

您可以创建一个以提升的权限运行的脚本setuid

在 shell 脚本上使用 setuid 或 setgid 位会产生比它解决的问题更多的问题,尤其是安全问题。某些系统(例如 Linux)甚至不支持 shell 脚本上的 setuid 位,因此创建 setuid shell 脚本除了安全风险之外还会产生不必要的可移植性问题。

setuid(2) — Linux 手册页

允许在 shell 脚本上设置 setuid

为什么我的 setuid root bash shell 脚本不起作用?

如何使用“setuid”位?

编写 setuid 或 setgid 脚本

这两种解决方案都应谨慎使用!

出于安全原因,建议firewalld最后使用root用户或具有管理权限的用户执行开放端口检查。

相关内容