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

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

评论

您究竟丢失了哪个密码?您的Windows帐户密码?

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

#1 楼


运行bash并记下您的Linux用户名(此名称不必与Windows用户名匹配),请参阅如何查找我的用户名?

如果正在运行,请在Ubuntu上关闭Bash。 (否则下一条命令将失败)。

在Windows管理员命令提示符(Super + X,A)中,将默认用户更改为root:

ubuntu config --default-user root



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

ubuntu1804 config --default-user root



现在在Ubuntu上使用Bash Windows以root用户身份登录,而无需询问密码

在Bash中使用passwd命令来更改用户密码(要重置其密码的用户):

passwd your_username



如果在Windows中使用Ubuntu 18.04,请在Windows命令提示符下将默认用户改回您的普通用户

ubuntu config --default-user  your_username



WSL,命令已更改为ubuntu1804,因此

ubuntu1804 config --default-user your_username


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

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

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

评论


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

– Endy Tjahjono
17年11月19日在9:13

是的,这是另一种方法,但出现错误:无法将默认用户设置为:root。

–柯比
17/12/17在7:47

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

–dr_
18年3月22日在9:16

我不断收到错误:0x80070057参数不正确,所以我遵循@ dr01的提示并在PowerShell中运行ubuntu,然后注销,然后再次配置默认用户。成功👍

–skia.heliou
18年6月7日在13:42



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

–Indominus
18年6月8日在3:43



#2 楼

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

所以我改为这样做,它起作用了:在记事本或记事本++中):

%localappdata%\lxss\rootfs\etc\shadow



查找普通用户,例如:

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


,然后简单地删除哈希部分(在下面)

$jsdjksadgfhsdf.saflsdf.sadf.safd


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

user1::17299:0:99999:7:::


保存文件

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

 sudo bash
 passwd <your-user-name> 


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



评论


这可行,但是官方目录现在类似于%localappdata%\ Packages \ CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc \ LocalState \ rootfs \ etc \ shadow

–毛罗·德斯特(Mauro Destro)
17年12月21日在8:13

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

–俄罗斯
18年1月4日在5:29



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

–金
18年3月15日在15:29

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

–克里斯蒂安·迪亚科内斯库(Cristian Diaconescu)
18年5月24日10:00

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

– Shanemeister
19年2月20日在15:01

#3 楼

在Windows PowerShell(Super + X,i)中,您可以使用
wsl --user root

登录到Ubuntu根帐户,然后像往常一样更改密码,即使用
passwd

或另一个具有
passwd username

的用户,该用户交互地询问您新密码(两次)。不需要Windows管理员特权。
如果在WSL中安装了多个发行版,则可以使用
wsl -l

列出已安装发行版的名称,然后使用发行版的名称。指定要登录的发行版,例如登录Ubuntu 20.04:
wsl -d Ubuntu-20.04 --user root


评论


太棒了!自10/2019起生效。而且,非常重要的是,即使没有Windows机器上的管理员特权,此提示命令也可以工作(如果在公司PC上,这可以节省时间和金钱)。

–Damien Pirsy
19-10-14在10:08

更改root密码-是的,只需在Windows下和控制台类型下启动Ubuntu之后,即可:$ su root#passwd YOUR_ACCOUNT_NAME

–dawciobiel
19-11-28在23:01



在VM上无法正常工作,因为我不知道旧密码。

– Gringo Suave
19年12月8日,0:58

@GringoSuave当您是root时,它不需要输入密码。您是否跳过了第一步或在两者之间添加了其他步骤?

–没人
19年12月8日在17:30

是的,知道了。不得不使用passwd用户。谢谢。

– Gringo Suave
19年12月8日在17:31

#4 楼

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

 # 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中获得E r r o r:0 x 8 0 0 7 0 0 0 2

– Nitin S
19 Mar 5 '19 at 6:45

#5 楼

我还需要在Windows 10中重设密码,我拥有WLS 1

1-检查您的linux / ubuntu名称,列出文件夹:

%userprofile%\AppData\Local\Microsoft\WindowsApps


就我而言,我找到了Ubuntu1604.exe,因此下一步将使用ubuntu1604之类的名称。


2-使用管理员特权打开CMD并运行(您将无法获得任何回报):

ubuntu1604 config --default-user root


3-启动您的WSL,检查您是否拥有root特权或运行whoami(您需要为root),然后使用:

passwd [your-linux-username]


4-关闭您的WSL并返回到CMD窗口并设置默认的Linux用户名:

ubuntu1604 config --default-user [your-linux-username]


5-重新启动WSL / Ubuntu / AnotherLinux,检查并享用。

#6 楼

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


Ubuntu
Ubuntu 18.04 LTS(选择此一个)以任何用户身份输入以下内容:

在命令提示符下,输入: />
cat /etc/*release


如果看到,肯定会更新为18.04,它将提示您创建新的UNIX凭据。