總結了網路上常用的幾種方法:
(其中方法一已失效,因為lxrun在win10 1709版本后被棄用,方法二和方法四在我這里失敗了,所以我個人最終采用的是方法三)
一、以管理員權限啟動PowerShell,輸入lxrun /setdefaultuser root,打開WSL,輸入passwd root修改密碼。
二、打開CMD或PowerShell,輸入ubuntu config --default-user root,修改ubuntu系統默認用戶為root,再打開bash輸入passwd root修改密碼。
注:
可以先在bash中輸入lsb_release -a查看ubuntu版本,根據他人的說法,18.04版本的需要輸入的指令是ubuntu1804 config --default-user root,kali版本需要輸入的是kali config --default-user root。也可以輸入ub后按下tab鍵補全查看自己應當輸入的是ubuntu還是ubuntu1804之類的。
我的ubuntu是Legacy模式下安裝的16.04版本,但奇怪的是無論我輸入ubuntu還是ubuntu1604,PowerShell都顯示無法識別,而且翻遍了tab給我補全的指令也沒有找到想要的。
三、在目錄C:\Users\用戶\AppData\Local\lxss\rootfs\etc下,找到名為shadow的文件,用notepad++之類的文本查看器打開,能看到root和所有普通用戶,以及經過加密的密碼。可以使用一個記得密碼的哈希覆蓋,也可以直接刪除root或用戶名后第一個冒號到第二個冒號之間的內容,然后打開bash輸入passwd就能直接設置新密碼。(不要忘記操作前備份~)
四、重置win10子系統(非卸載,參考百度)
然而我在應用里根本沒找到對應的應用,而且也無法通過CMD重置(如前面所說,無法識別ubuntu指令)。
盡管疑惑還是很大,但問題算是解決了,暫時先不求甚解吧~
參考:
1.《Win10 1709 以來的 WSL》
https://www.douban.com/note/645961103/
2.《win10中的ubuntu子系統忘記root密碼如果修改?》
https://social.technet.microsoft.com/Forums/SECURITY/en-US/3816c875-7c48-4620-82b6-31d5547f1076/
3.《win ubuntu子系統忘記密碼后的重置密碼》
https://blog.csdn.net/qq2588258/article/details/100932334
4.《修改Wsl為root登錄,並修改root密碼》
https://blog.csdn.net/zcy_wxy/article/details/103621808