![如何修复 sudo:帐户验证失败,您的帐户被锁定了吗?](https://linux22.com/image/1584886/%E5%A6%82%E4%BD%95%E4%BF%AE%E5%A4%8D%20sudo%EF%BC%9A%E5%B8%90%E6%88%B7%E9%AA%8C%E8%AF%81%E5%A4%B1%E8%B4%A5%EF%BC%8C%E6%82%A8%E7%9A%84%E5%B8%90%E6%88%B7%E8%A2%AB%E9%94%81%E5%AE%9A%E4%BA%86%E5%90%97%EF%BC%9F.png)
首先,我想说的是,我正在运行 Manjaro Linux。今天,当我想安装一个新程序时,尝试使用 sudo pacman 时出现以下错误:
sudo: account validation failure, is your account locked?
我搜索了一下,找到了导致此问题的一些可能原因,但我找到的解决方案似乎都无法解决我的问题。到目前为止,我尝试过的方法:
- 使用 init=/bin/su 启动并运行 /usr/bin/passwd
- 使用 chage 检查 root 和我的用户帐户的到期日期
另一件可能需要提及的重要事情是,我曾经使用指纹读取器对 sudo 进行身份验证。我使用 fprintd 来执行此操作。我认为这可能是错误的原因,所以我也删除了 fprintd,但这并没有解决问题。有人知道我该如何解决这个问题吗?
答案1
在重命名 WSL 容器的默认用户帐户名后,我在 WSL2+Ubuntu 上遇到了这个错误。登录正在运行,因为我可以wsl
从主机运行并通过 bash 到达 Ubuntu 实例内的主目录,但sudo
会失败。
由于某种原因,我的usermod
命令没有修改/etc/shadow
并且它仍然使用旧的帐户名。
oldname:$n$[...]$[...]:18529:0:99999:7:::
解决方案是手动将文件更正为正确的帐户名,然后sudo
再次工作。如果您需要 root 访问权限才能在 WSL2 中执行此操作,您可以wsl -u root
从主机运行以获取 root shell。
答案2
我通过使用 root 登录来修复此问题:
su -
之后我检查了 /etc/pam.d/sudo,发现我的文件与标准文件不同(例如,它仍然包含一些与指纹读取器有关的变量)。我将其更改为与默认文件完全一样,之后 sudo 又可以正常工作了!