问题描述
我已经在Windows 10上安装了Linux Bash(可以从Microsoft获得最新的更新),但是现在我忘了密码已经很久了。
我检查了许多网站,并说它是通过引导选项,在这种情况下不起作用,因为这是Windows系统。
我怎样才能重置我的密码?
最佳解决方案
-
运行
bash
并记下您的Linux用户名(这不需要与您的Windows用户名匹配),请参阅How can I find out my user name? -
在Windows管理命令提示符下(
Super
+X
,A
)将默认用户更改为root:ubuntu config --default-user root
-
现在,Windows上的Ubuntu上的Bash会以root身份登录,而不会询问密码
-
在Bash中使用
passwd
命令更改用户密码(要重置其密码的用户):passwd your_username
-
在Windows命令提示符下将默认用户更改回普通用户
ubuntu config --default-user your_username
次佳解决方案
以上不起作用。即使在更改默认用户后,bash也会随我的用户一起打开。所以相反,这工作:
-
编辑文件(在记事本或记事本+ +):
%localappdata%\lxss\rootfs\etc\shadow
-
找到你的普通用户,例如:
user1:$jsdjksadgfhsdf.saflsdf.sadf.safd:17299:0:99999:7:::
并简单地删除哈希部分(下面的部分)
$jsdjksadgfhsdf.saflsdf.sadf.safd
你会看到不同的散列 – 我希望:),所以应该看起来像:
user1::17299:0:99999:7:::
-
保存文件
-
再次启动bash
-
sudo bash
-
密码这将要求您的新密码,而不需要以前的密码。
第三种解决方案
要添加到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