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

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

我已经搜索了一个解决方案但我只找到了在系统启动之前做某些事情的建议,比如访问恢复模式,但在这种情况下这不起作用,因为这个Ubuntu只是Windows系统中的一个应用程序而没有它自己的启动过程。

我该如何重置密码?

  • 运行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身份登录,而不会询问密码
  • 在Bash中使用passwd命令更改用户密码(要重置其密码的用户):

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

     ubuntu config --default-user your_username 

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

 ubuntu1804 config --default-user your_username 

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

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

注意2:如果您仍在使用周年纪念更新附带的原始Ubuntu子系统,请使用命令lxrun 。 建议升级到通过Microsoft Store分发的子系统版本。)

以上都行不通。 即使在更改默认用户后,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  

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

要添加到Tmu的答案,这里是一个Powershell脚本( 要点 ),它自动化该过程(包括自动检测当前的默认用户名)

 # 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