我正在运行一些脚本来检查 UFW 状态,并且希望sudo ufw status
在不执行 的情况下运行sudo
。我希望找到一个防火墙或者联邦快递我想添加自己到其中的一个群组,但是我没找到任何群组。
我怎样才能允许任何用户 X 执行ufw status
无需 root 身份或请求须藤密码?
更新:
我想尝试将自己的文件添加到/etc/sudoers.d/
,但是很懒,所以决定复制一个已经存在的文件,如下所示:
sudo cp /etc/sudoers.d/mintupdate /etc/sudoers.d/firewall_status
不要这样做!您将无法执行 sudo 或再次登录。我不得不进行启动恢复。请改用:
sudo visudo -f /etc/sudoers.d/ufwstatus
现在只需按照下面接受的答案进行操作。
答案1
这是一个/etc/sudoers.d/
适合我使用的文件:
$ sudo cat /etc/sudoers.d/ufwstatus
Cmnd_Alias UFWSTATUS = /usr/sbin/ufw status
%ufwstatus ALL=NOPASSWD: UFWSTATUS
然后添加新的“ufwstatus”组(这里添加为系统团体):
sudo groupadd -r ufwstatus
必须将您的非特权用户添加到ufwstatus
组中,例如
sudo gpasswd --add testuser ufwstatus
为了使更改生效,用户需要再次登录:
su - testuser
然后
testuser@xenial-vm:~$ sudo ufw status
Status: active
To Action From
-- ------ ----
22/tcp ALLOW 192.168.1.0/24
3389/tcp ALLOW 192.168.1.0/24
111 ALLOW 192.168.1.0/24
2049 ALLOW 192.168.1.0/24
但其他ufw
命令是不允许的(即使是轻微的变体,例如status --verbose
):
testuser@xenial-vm:~$ sudo ufw status --verbose
Sorry, user testuser is not allowed to execute '/usr/sbin/ufw status --verbose' as root on xenial-vm.
testuser@xenial-vm:~$ sudo ufw disable
Sorry, user testuser is not allowed to execute '/usr/sbin/ufw disable' as root on xenial-vm.