如何在没有sudo(或root)的情况下检查UFW状态?

not*_*bit 5 sudo firewall ufw

我正在运行一些脚本来检查 UFW 状态,并且希望sudo ufw status无需执行sudo. 我希望找到一个防火墙ufw组来添加我自己,但我没有找到。

如何允许任何用户 X 在ufw status没有 root 身份或要求sudo密码的情况下执行此操作?


更新

我想尝试将我自己的文件添加到/etc/sudoers.d/,但很懒,所以决定复制一个已经存在的文件,如下所示:

sudo cp /etc/sudoers.d/mintupdate /etc/sudoers.d/firewall_status
Run Code Online (Sandbox Code Playgroud)

不要那样做!您将无法再次执行 sudo 或登录。我不得不做一个启动恢复。而是使用:

sudo visudo -f /etc/sudoers.d/ufwstatus
Run Code Online (Sandbox Code Playgroud)

现在只需按照下面接受的答案即可。

ste*_*ver 5

这是一个/etc/sudoers.d/适合我的文件:

$ sudo cat /etc/sudoers.d/ufwstatus
Cmnd_Alias      UFWSTATUS = /usr/sbin/ufw status

%ufwstatus      ALL=NOPASSWD: UFWSTATUS
Run Code Online (Sandbox Code Playgroud)

然后添加新的“ufwstatus”组(这里添加为系统组):

sudo groupadd -r ufwstatus
Run Code Online (Sandbox Code Playgroud)

您的其他非特权用户必须添加到ufwstatus组中,例如

sudo gpasswd --add testuser ufwstatus
Run Code Online (Sandbox Code Playgroud)

为了使更改生效,用户需要重新登录:

su - testuser
Run Code Online (Sandbox Code Playgroud)

然后

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
Run Code Online (Sandbox Code Playgroud)

但其他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.
Run Code Online (Sandbox Code Playgroud)