我们有操作系统 ubuntu 18.04。有 2 个用户:user1、user2。user1 是管理帐户,并且是 sudo 组的成员:
uid=1010(user1) gid=1010(user1) groups=1010(user1),27(sudo),110(lxd)
。user2 是普通用户uid=1000(user2) gid=1000(user2) groups=1000(user2)
。现在,在 /etc/sudoers 文件中,我有一个 sudo 组的默认记录:
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
以及允许使用 user2 的管理(root)权限执行的特殊命令:
Cmnd_Alias CMD_RELOAD_PHP_FPM = /bin/systemctl reload php7.0-fpm, /bin/systemctl reload php7.2-fpm
user2 ALL=(root:root) NOPASSWD: CMD_RELOAD_PHP_FPM
在这一步一切都很好 user2 可以在不输入密码的情况下执行 Cmnd_Alias 中指定的所有内容,因此可以按预期工作。
但是,当 user2 尝试执行他不允许执行的操作时,他会提示输入、注意、user1
密码。不是root
,不是他自己的user2
,而是user1
密码,而不是默默地或信息性地否认这种行为:
user2@someserver:~$ /bin/systemctl restart <someservice>
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to restart 'someservice.service'.
Authenticating as: user1
Password:
user1
是 sudo 组的唯一成员。
grep 'sudo' /etc/group
sudo:x:27:user1
grep 'sudo' /etc/gshadow
sudo:*::user1
如果user1
从sudo
组中删除并user2
尝试执行相同的命令,则要求他输入root
密码。
我怎样才能改变这种行为,所以user2
尝试会被拒绝而不是要求他输入密码?