我在sudoers.d
.该用户foobar
在该sudo
组中。期望用户foobar
只能通过ssh
公钥身份验证登录,因为在创建用户时,他们的密码被扰乱为随机值。然后,他们应该sudo passwd foobar
通过访问计算机后运行来设置密码ssh
。
# /etc/sudoers.d/sudo-group
%sudo ALL=(ALL) ALL
# /etc/sudoers.d/change-own-passwd
foobar ALL = NOPASSWD: /usr/bin/passwd foobar
但是,系统仍会提示用户输入密码:
$ which passwd
/usr/bin/passwd
$ sudo -ll
User foobar may run the following commands on bizbazz:
Sudoers entry:
RunAsUsers: root
Options: !authenticate
Commands:
/usr/bin/passwd foobar
Sudoers entry:
RunAsUsers: ALL
Commands:
ALL
$ sudo passwd foobar
[sudo] password for foobar: ^C
sudo: a password is required
答案1
SUDOERS 文件格式
...
当多个条目与一个用户匹配时,它们将按顺序应用。如果有多个匹配项,则使用最后一个匹配项(不一定是最具体的匹配项)。
从man 5 sudoers
因此,应用规则时顺序很重要。将名称更改为按字典顺序排列(000-sudo-group
和100-change-own-passwd
)可以解决此问题。