我已经安装了 WSL 2 并使用了 Kali(之前有版本 1.0)。在这两个版本中我都有一个问题 - 我无法使用 sudo。一旦我执行它,我就会得到:
Sorry, try again.
Sorry, try again.
sudo: 3 incorrect password attempts
正如您所想象的那样,我们不能指望 UNIX 在 Windows 上正常工作,但仍然......
那么,我应该从哪里开始呢?日志、检查?
答案1
正如评论中提到的,sudo
密码应该(至少在 Kali 中)与您的用户的密码相同。
在 WSL 中,默认用户和关联密码是在安装后首次运行 Kali 时创建的。没有 root 密码。
当然,在 WSL 中,您的用户密码并不常用,因为没有“登录”。几乎您通常唯一需要它的时间就是sudo
。
但如果您忘记了它,在 WSL 中恢复起来相当容易。从 PowerShell 或 CMD(不是从 Kali 内部)执行以下操作:
wsl -u root passwd <username>
这利用了这样一个事实:您可以使用该-u
选项在任何用户名下运行 WSL。与大多数 WSL 操作一样,不需要密码,因为 WSL 仅限于您的权限视窗无论如何用户。
如果仍然不允许您运行sudo
,那么您的系统可能sudoers
存在问题。如果所有其他方法都失败,您可以尝试删除现有的/etc/sudoers
,然后重新安装。
在尝试此操作之前,我建议对图像进行完整备份,因此我将其作为第一行包含在此处。同样,这应该通过 PowerShell 或 CMD 完成:
wsl --export kali-linux snapshot.tar
wsl -u root rm /etc/sudoers
wsl -u root apt install --reinstall -o Dpkg::Options::="--force-confask,confnew,confmiss" sudo
答案2
这是因为 c 库 libcrypt 丢失,我遇到了同样的问题,但是直接安装 Debian,解决步骤如下:
- 从 cmd 以 root 身份登录
wsl -u root
- 解决 libc6 未配置的问题,这是 libcrypt 的依赖项。
dpkg --configure libc6
- 在 apt 之外下载 libcrypt1,因为 apt 也损坏了:
wget http://http.kali.org/kali/pool/main/libx/libxcrypt/libcrypt1_4.4.33-2_amd64.deb -O libcrypt1_4.4.33-2_amd64.deb
或者如果您在直接 Debian 上遇到同样的问题,请使用他们的 libcrypt1 版本。
wget http://ftp.uk.debian.org/debian/pool/main/libx/libxcrypt/libcrypt1_4.4.18-4_amd64.deb -O libcrypt1_4.4.18-4_amd64.deb
- 安装刚刚下载的libc
dpkg -i libcrypt1_4.4.*_amd64.deb
- 检查您是否有其他损坏的软件包依赖项,如果有,您在尝试 apt 升级后将会看到问题。
apt update
apt upgrade
- 修复软件包依赖关系(如果上一步失败需要),然后再次运行升级,现在应该可以通过
apt --fix-broken install
apt upgrade
答案3
在 powershell 中,输入
wsl --unregister <distro>
然后重新安装新鲜的。