在Windows中的Ubuntu / Linux Bash中重置密码


191

我已在Windows 10(可从Microsoft获得)上安装Linux Bash,但忘记了密码。

我一直在寻找解决方案,但是我只发现一些建议,这些建议涉及在系统启动之前做一些事情,例如访问恢复模式,但是在这种情况下将不起作用,因为此Ubuntu只是Windows系统中的一个应用程序,没有它自己的启动过程。

如何重设密码?


4
您究竟丢失了哪个密码?您的Windows帐户密码?
David Foerster'8

一个示例“引导选项”是通过grub将内核cmdline设置为“单”来引导到单用户模式。对于那些好奇的人。
kevinf

1
在WSL2(Windows 10 v1903)中已更改。从cmd或powershell,以root身份启动ubuntu shell:wsl -user root然后:passwd <您的用户名>。退出wsl。下次ubuntu shel打开时:sudo ls将接受新的root密码。
jdh

Answers:


323
  • 运行bash并记下您的Linux用户名(此名称不必与Windows用户名匹配),请参阅如何查找我的用户名?
  • 如果它正在运行,请在Ubuntu上关闭Bash(否则下一个命令将失败)。
  • 在Windows管理员命令提示符(Super+ XA)中,将默认用户更改为root:

    ubuntu config --default-user root
    

如果您在WSL中使用Ubuntu 18.04,则命令已更改为ubuntu1804,因此

ubuntu1804 config --default-user root
  • 现在Windows上的Ubuntu上的Bash无需密码即可以root用户身份登录
  • 使用passwdBash中的命令来更改用户密码(您要重置其密码的用户):

    passwd your_username
    
  • 在Windows命令提示符下将默认用户更改回您的普通用户

    ubuntu config --default-user  your_username
    

如果您在WSL中使用Ubuntu 18.04,则命令已更改为ubuntu1804,因此

ubuntu1804 config --default-user your_username

观看完整视频以恢复密码Windows子系统Linux https://youtu.be/dTR232yvDCE

注意1:视频中使用的子系统不是Ubuntu,而是Kali Linux。因此,命令的差异。

注意2:如果您仍在使用Anniversary Update随附的原始Ubuntu子系统,请使用命令lxrun。建议升级到通过Microsoft Store分发的子系统版本。)


7
lxrun适用于WSL的Beta版。如果从应用程序商店安装ubuntu,则命令为ubuntu config --default-user root
Endy Tjahjono

2
是的,这是另一种方法,但出现了错误:Failed to set default user to: root
Kirby

2
@Kirby:在Windows命令提示符下运行命令之前,必须注销WSL Shell。
dr01

1
我一直在获取信息Error: 0x80070057 The parameter is incorrect,因此最终遵循@ dr01的提示并ubuntu在PowerShell中运行,然后在logout,然后再次配置了默认用户。成功👍–
skia.heliou

2
如果您在WSL上安装了ubuntu 18.04,则命令ubuntu1804不是ubuntu。希望这可以节省一些麻烦。
Indominus

53

上面没有用。即使更改了默认用户,Bash仍会与我的用户一起打开。

因此,我改为这样做,它的工作原理是:

  1. 编辑此文件(在记事本或记事本++中):

    %localappdata%\lxss\rootfs\etc\shadow
    
  2. 查找您的普通用户,例如:

    user1:$jsdjksadgfhsdf.saflsdf.sadf.safd:17299:0:99999:7:::
    

    并只需删除哈希部分(下面的部分)

    $jsdjksadgfhsdf.saflsdf.sadf.safd
    

    您将看到一个不同的哈希-我希望:)所以它看起来应该像这样:

    user1::17299:0:99999:7:::
    
  3. 保存文件

  4. 以root特权再次启动Bash并设置密码

     sudo bash
     passwd <your-user-name> 
    

    现在,您无需输入上一个密码即可设置一个新密码。


9
这行得通,但官方目录现在类似于%localappdata%\ Packages \ CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc \ LocalState \ rootfs \ etc \ shadow
Mauro Destro

11
到目前为止,这是最好的答案。要查找shadow文件的路径,可以使用以下PowerShell憎恶性:Get-ChildItem -Path C:\ -Filter shadow -Recurse -ErrorAction SilentlyContinue -Force这是find /mnt/c/ -name shadow执行和结果方面的疯狂详细版本。不需要提升的特权来编辑文件,但是在执行操作之前,请确保关闭bash窗口。
罗斯,

1
这是赢家!当第一个答案没有时,效果很好。

1
接受的答案告诉我“错误:0x80070057参数不正确。”。(不,控制台未处于旧版模式)。这无缝进行。
Cristi Diaconescu

1
该答案的工作原理与上面概述的完全相同。第一个答案对我不起作用。
Shanemeister

27

编辑如果您有WSL的商店安装发行版,则此方法不再起作用。

为了增加Tmu的答案,以下是一个Powershell脚本(gist),该脚本可自动执行该过程(包括自动检测当前的默认用户名)

# Resets the password for the default LXSS / WSL bash user
$lxssUsername = (Get-ItemProperty HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss).DefaultUsername
lxrun /setdefaultuser root
bash -c "passwd $lxssUsername"
lxrun /setdefaultuser $lxssUsername

在Powershell中获取错误:0 x 8 0 0 7 0 0 0 0 2
Nitin Sawant

1

截至2019-09-05,有一个比现有答案简单得多的过程(大多数答案已经过时,根本无法使用)。

在Windows管理员命令提示符(Super+ XA)中,您可以使用以下命令登录Ubuntu根帐户

wsl --user root

然后,像平常一样更改密码,方法是

passwd

它以交互方式要求您输入新密码(两次)。


0

对于那些丢失了root密码的人来说,对我有用的是通过Windows Store更新到Ubuntu 18.04 LTS。注意,Windows存储具有两个不同的选项:

  1. 的Ubuntu
  2. Ubuntu 18.04 LTS(选择这个

要检查您的当前版本,请以任何用户身份运行以下命令:

在命令提示符下,输入:

cat /etc/*release

您应该在输出中看到一行:

DISTRIB_RELEASE=16.01

如果看到该消息,则绝对更新为18.04,它将提示您创建新的UNIX凭据。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.