我在 arch linux 上使用sudo
1.8.24(只是操作系统附带的默认版本),并且遇到了问题,它提示我输入密码,只是为了列出命令是否有效。这是我的/etc/sudoers
文件:
Defaults rootpw
Defaults listpw=never
%wheel ALL=(ALL) ALL
%wheel ALL=(ALL) NOPASSWD: /bin/false ""
我是轮组的该文档让我相信这listpw=never
意味着我在运行时永远不会被提示输入密码sudo -l
,而且无论如何,如果我不需要密码,默认值应该是允许它/bin/false
。
不幸的是,当我运行时sudo -l /bin/false
,它提示我输入自己的密码。注意sudo /bin/false
不需要密码,其他sudo
任何东西都会提示输入 root 密码,但sudo -l
任何东西都会提示输入我的密码。如果我已经输入 root 密码以 root 身份运行某些程序,这会特别烦人,因为在运行时我仍然需要在两秒后输入自己的密码sudo -l
。 (这是脚本经常使用的模式,它在运行之前检查您是否有权限sudo
,导致我被提示输入密码,即使在sudo
不请求密码的情况下也能成功。)
更新
当我运行时sudo -l
,系统会提示我输入密码,然后 sudo 打印:
Matching Defaults entries for user on machine:
rootpw, listpw=never, timestamp_timeout=60, env_keep+=HOME
User user may run the following commands on machine:
(ALL) ALL
(ALL) NOPASSWD: /bin/false
另外,我已经升级到 sudo 1.8.25,但仍然看到问题,所以我基本上放弃了,并得出结论,这是 sudo 中的一个错误。
答案1
FWIW 我也可以在 1.8.27 上重现这个,但它是已于 1.8.28 修复
如果您删除该listpw=never
条目,您的ALL ALL=(ALL) NOPASSWD: /usr/bin/false
线路将触发接受规则并sudo -l
停止提示输入密码。