一个用户有多种 sudo 类型

一个用户有多种 sudo 类型

我遇到过一种情况,我希望主管理员用户(所有用户都具有 sudo 权限)以无密码 sudo 权限作为另一个用户执行一个命令。据我所知,这应该在 /etc/sudoers 中提供以下内容:

ramo   ALL=(otherUser) NOPASSWD: /usr/bin/command
ramo   ALL=(ALL) ALL

但这两行代码似乎有冲突,或者第二行代码覆盖了第一行代码。有什么方法可以实现这一点吗?

干杯

拉莫

编辑:事实证明,我稍微误解了 sudo 在指定用户时的工作方式。我的印象是,如果您有 ALL=(otherUser),那么您不需要“sudo -u otherUser”,而只需 sudo 即可。事实并非如此。

答案1

顺序很重要,其行为在 sudoers(5) 手册页中有描述:

当多个条目与用户匹配时,将按顺序应用它们。如果有多个匹配项,则使用最后一个匹配项(不一定是最具体的匹配项)。

根据您原来的规则,“(ALL) ALL”是最后一个匹配,因此 sudo 会提示输入密码。

以下 /etc/sudoers 有效:

ramo   ALL=(ALL) ALL
ramo   ALL=(otherUser) NOPASSWD: /bin/whoami

例如:

$ sudo -k /bin/whoami
[sudo] password for ramo: 
root
$ sudo -k -u otherUser /bin/whoami
otherUser
$ sudo -k -u otherUser /bin/true
[sudo] password for ramo:
$ sudo -k /bin/true
[sudo] password for ramo:

在 Fedora 19 上使用 sudo-1.8.6p7-1 进行测试

答案2

我认为你可以用“!”来否定。试试第二行

ramo ALL=(ALL) !/usr/bin/command

相关内容