我在寻找解决方案,但在系统启动之前,我只发现涉及做某事的建议,就像访问恢复模式一样,但是在这种情况下将不起作用,因为该Ubuntu只是Windows系统中的一个应用程序,并且没有自己的启动过程。
#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 11-检查您的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凭据。
评论
您究竟丢失了哪个密码?您的Windows帐户密码?一个示例“引导选项”是通过grub将内核cmdline设置为“单”来引导到单用户模式。对于那些好奇的人。