我遇到一种情况,我希望主管理员用户(所有人都使用 sudo)将无密码 sudo 作为一个命令的另一用户。据我所知, /etc/sudoers 中应该给出以下内容:
ramo ALL=(otherUser) NOPASSWD: /usr/bin/command
ramo ALL=(ALL) ALL
Run Code Online (Sandbox Code Playgroud)
但这两行似乎冲突,或者第二行覆盖了第一行。关于如何实现这一目标有什么想法吗?
干杯
拉莫
编辑:事实证明我在指定用户时稍微误解了 sudo 的工作原理。我的印象是,如果您有 ALL=(otherUser) 那么您不需要“sudo -u otherUser”,而只需 sudo 即可。事实并非如此。
小智 7
顺序很重要,其行为在 sudoers(5) 手册页中进行了描述:
当多个条目与一个用户匹配时,它们将按顺序应用。如果有多个匹配项,则使用最后一个匹配项(不一定是最具体的匹配项)。
根据您的原始规则,“(ALL) ALL”是最后一个匹配项,因此 sudo 会提示输入密码。
以下 /etc/sudoers 有效:
ramo ALL=(ALL) ALL
ramo ALL=(otherUser) NOPASSWD: /bin/whoami
Run Code Online (Sandbox Code Playgroud)
例如:
$ 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:
Run Code Online (Sandbox Code Playgroud)
在 Fedora 19 上使用 sudo-1.8.6p7-1 进行测试
归档时间: |
|
查看次数: |
4028 次 |
最近记录: |