我有一个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