我正在运行一些脚本来检查 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)
现在只需按照下面接受的答案即可。
这是一个/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)
| 归档时间: |
|
| 查看次数: |
3670 次 |
| 最近记录: |