sudo 不适用于在 WSL 下运行的 Kali

sudo 不适用于在 WSL 下运行的 Kali

我已经安装了 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,解决步骤如下:

  1. 从 cmd 以 root 身份登录
wsl -u root
  1. 解决 libc6 未配置的问题,这是 libcrypt 的依赖项。
dpkg --configure libc6
  1. 在 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
  1. 安装刚刚下载的libc
dpkg -i libcrypt1_4.4.*_amd64.deb
  1. 检查您是否有其他损坏的软件包依赖项,如果有,您在尝试 apt 升级后将会看到问题。
apt update
apt upgrade
  1. 修复软件包依赖关系(如果上一步失败需要),然后再次运行升级,现在应该可以通过
apt --fix-broken install
apt upgrade

答案3

在 powershell 中,输入

wsl --unregister <distro>

然后重新安装新鲜的。

相关内容