我在 Windows 上安装了 Kali Linux 子系统。现在我忘记了 root 密码。只有 Kali Linux 的终端,没有其他东西。我该如何安全地重置密码?
注意:我同时安装了 Ubuntu 和 Kali Linux,但bash
默认运行时会打开 Ubuntu。
答案1
我同时安装了 Ubuntu 和 Kali Linux 但是当我默认运行 bash 时它会打开 Ubuntu。
在新版 Windows 中,用户可以安装并运行多个 GNU/Linux 发行版。可以使用命令配置默认发行版(即随附的发行版wsl.exe
) 。例如,要在首次运行时wslconfig /s <disrto_name>
使用 打开 Kali ,请使用此命令或运行。wsl.exe
wslconfig /s kali-linux
kali.exe
我忘记了 Kali 中的 root 密码,只有 Kali Linux 终端,没有其他任何东西。我该如何安全地重置密码?
首先,我不知道这个过程是否安全。在撰写本文时,WSL 从DefaultUID
注册表管理默认登录用户(将来可能会发生变化)。关闭任何打开的 WSL 实例。要编辑此注册表值,请打开注册表编辑器或regedit.exe
从开始菜单或运行对话框。转到此注册表路径或在该窗口中使用Ctrl+键入此路径L:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss
您可能会看到一个或多个子项(如子文件夹),其名称类似于{12345678-1234-1234-1234-123456789012}
(称为 GUID)。双击它们以逐个打开,并将值DistributionName
与您想要的发行版名称匹配,它将在这里kali-linux
(见下文)。双击该DefaultUID
值并将其更改为 ZERO。零代表 root 用户,或1000
(0x3e8
十六进制)代表普通用户。
在命令提示符中打开wsl.exe
。提示符从 变为$
(#
表示 root 用户)。passwd
在 Kali 中运行命令,照常更改 root 密码。现在返回上一个注册表项,将零更改为上一个值(或3e8
十六进制)。以下是注册表值的示例:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss]
"DefaultDistribution"="{f029d4cd-b7ee-42bc-ae02-af8f2c97f495}"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\{f029d4cd-b7ee-42bc-ae02-af8f2c97f495}]
"State"=dword:00000001
"DistributionName"="kali-linux"
"Version"=dword:00000001
"BasePath"="C:\\MyFiles\\kali-linux"
"KernelCommandLine"="BOOT_IMAGE=/kernel init=/init ro"
"DefaultUid"=dword:000003e8
"Flags"=dword:00000007
更多细节:
答案2
我知道这是一个老问题,但我想根据微软的指导提供答案,因为我偶然发现了这个问题并且知道一定有更好的方法。
本文基于以下网址的文章:https://docs.microsoft.com/en-us/windows/wsl/user-support运行至少运行 Windows 10 1709(秋季创意者更新)的设备
- 确保 Kali 没有运行
- 打开命令提示符(
cmd.exe
) - 在命令提示符下运行
kali config --default-user root
- 运行 Kali,你应该自动以 root 身份登录
- 在 Kali 中,运行
passwd user
user ,其中 user 是你要重置密码的帐户的用户名,即passwd bob
- 按照提示重置密码,然后输入
exit
关闭Kali - 在命令提示符下,运行
kali config --default-user user
用户,其中用户是您刚刚重置密码的用户名,即kali config --default-user bob
按照这些步骤,您应该能够在 WSL 上的 Kali 中重置您的帐户密码。
答案3
该解决方案由以下公式给出:比斯瓦普里约. 感谢他
Win + R
在 Windows 中按Type打开运行命令wsl.exe
,或者从 Windows 开始菜单打开 Bash 窗口。如果你正在运行 Bash 窗口,请按照以下步骤操作
如果您忘记了用户名
在那里输入cat /etc/passwd
你可以看到用户名
找回密码
再次打开运行命令并输入regedit
去
计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss
登錄。
查找注册表值DistributionName==Kali_Linux.
导出当前注册表,以防出现问题,您可以返回
改变defaultUID
注册表归零。[但也要记住旧的价值]
打开Kali,输入passwd
更改root密码。
下次为了避免在 kali 中使用 root 登录,请将 defaultUID 注册表更改为旧值
答案4
最初提出该问题时(或写出以前的答案时)无法使用以下方法,但wsl
现在该命令可以比旧方法更容易(更安全)地处理这个问题。
请注意,以下内容适用于在 WSL 中安装的任何发行版的几乎任何 shell - Ubuntu、Kali 等。唯一的要求是命令passwd
本身,它应该是通用的。
假设你只安装了一个 WSL 发行版,那么这一行命令应该可以在 PowerShell 中运行:
wsl -u root -e passwd (wsl -e bash -c 'echo $USER')
这本质上等同于:
wsl -u root passwd <your_username>
如果你安装了多个 WSL 发行版(例如 Kali 和 Ubuntu),那么:
wsl -l -v
# Confirm the correct distribution name
wsl -d <distroname> -u root -e passwd <your_username>
附注:-e passwd
告诉 WSL 运行passwd
命令直接地,而无需调用 shell。这非常适合于由于某种原因而无法访问默认 shell 的情况。