如何覆盖 sudoers 中 rootpw 的默认值

如何覆盖 sudoers 中 rootpw 的默认值

我有一个sudoers文件许多項目。

顶部是默认设置:

# default sudo password is the ROOT password (not the invoking user's password)
Defaults rootpw

但是有一个特定的命令我想让用户以 root 身份运行,只要他们输入自己的密码。

我如何指定特定命令需要调用用户的密码 - 从而覆盖“默认值”设置?

例如,如何修改以下命令以要求调用用户的密码(不是root 密码):

markus ALL = PASSWD: /usr/sbin/tcpdump -p -i eth2 host 192.168.14.15

答案1

使用

Defaults!/usr/sbin/tcpdump !rootpw

禁用rootpw单个命令。请参阅这个答案和/或man 5 sudoers了解更多信息。

或者,NOPASSWD选项完全禁用密码提示,例如

markus ALL = NOPASSWD: /usr/sbin/tcpdump -p -i eth2 host 192.168.14.15

最后,你可以使用rootpw以下方式禁用单个用户

Defaults:markus !rootpw

如果要rootpw为特定用户和特定命令覆盖,至少可以使用以下解决方法:创建包装脚本,例如/usr/local/bin/special_tcpdump.sh

 #!/bin/sh
 /usr/sbin/tcpdump $*

然后,配置sudoers

 Defaults!/usr/local/bin/special_tcpdump.sh !rootpw
 markus ALL = PASSWD: /usr/local/bin/special_tcpdump.sh -p -i eth2 host 192.168.14.15

相关内容