![为什么我的 sudo 只要求输入一次密码但评估三次?](https://linux22.com/image/16367/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E7%9A%84%20sudo%20%E5%8F%AA%E8%A6%81%E6%B1%82%E8%BE%93%E5%85%A5%E4%B8%80%E6%AC%A1%E5%AF%86%E7%A0%81%E4%BD%86%E8%AF%84%E4%BC%B0%E4%B8%89%E6%AC%A1%EF%BC%9F.png)
$ sudo some_command
Password:
Sorry, try again.
Sorry, try again.
Sorry, try again.
sudo: 3 incorrect password attempts
$
这是当我在 sudo 命令中输入错误密码时 shell 打印的内容。
为什么会发生这种情况?
$ sudo -V
Sudo version 1.6.7p5
$ uname -a
Linux lazer 2.6.18-164.0.0.0.1.el5xen #1 SMP Thu Sep 3 00:34:43 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux
$
答案1
不久前,我在 PAM 配置中试验了 RSA SecurID 模块,并成功地为自己创建了这种行为,因此我知道一种方法来复制您所看到的内容。
PAM_AUTH_ERR
如果您有一个 pam 模块作为唯一配置的required
模块或与requisite
其他模块一样(或在具有类似效果的许多其他可能的配置中)失败(返回),它将立即返回失败sudo
,然后重试两次,连续三次失败。 (如果出于某种您愿意的原因,您可以将其配置passwd_tries
为/etc/sudoers
3 以外的值,以便获得更多或更少的失败。)
这不会首先提示您输入密码,但肯定有一些 PAM 配置可以做到这一点,在第一次失败后将您锁定,然后在下一次尝试时快速返回失败。
因此,我将继续猜测您要么搞乱了 PAM 配置,要么该配置指出的某些内容以不会引入延迟的方式失败(无论正确与否)。 (“正常”延迟通常实际上是由pam_unix.so
模块引入的,除非您给它nodelay
参数。)
重新创建此内容的一种简单方法是将
auth requisite pam_deny.so
auth
就在 中任何现有行的上方/etc/pam.d/sudo
。再说一遍,这是立即失败,而不是提示一次然后失败,但这应该让您走上特定配置的轨道。 (据我了解,如果您提供正确的密码,您的设置就可以正常工作,因此我会研究您配置的 PAM 模块的故障行为。)
答案2
这可能很愚蠢,但是你的键盘工作正常吗?您可以按三次 Enter 键。
类似的事情也发生在我身上:)
答案3
尝试sudo -K
删除时间戳。还要查看时间戳目录(debian 系统上的 /var/run/sudo),也许那里出了问题。