我注意到甚至检查 的状态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
命令的权限。
修改系统配置和授予权限时一定要小心!
在 CentOS7 中使用 firewalld 显示开放端口列表
设定值
您可以创建一个以提升的权限运行的脚本setuid
。
在 shell 脚本上使用 setuid 或 setgid 位会产生比它解决的问题更多的问题,尤其是安全问题。某些系统(例如 Linux)甚至不支持 shell 脚本上的 setuid 位,因此创建 setuid shell 脚本除了安全风险之外还会产生不必要的可移植性问题。
为什么我的 setuid root bash shell 脚本不起作用?
这两种解决方案都应谨慎使用!
出于安全原因,建议firewalld
最后使用root
用户或具有管理权限的用户执行开放端口检查。