รีเซ็ตรหัสผ่านใน Ubuntu / Linux Bash ใน Windows


191

ฉันติดตั้ง Linux Bash บน Windows 10 (พร้อมใช้งานจาก Microsoft) แต่ฉันลืมรหัสผ่าน

ฉันค้นหาวิธีแก้ปัญหา แต่ฉันพบเฉพาะคำแนะนำที่เกี่ยวข้องกับการทำอะไรบางอย่างก่อนบู๊ตระบบเช่นการเข้าถึงโหมดการกู้คืน แต่จะไม่ทำงานในกรณีนี้เนื่องจาก Ubuntu นี้เป็นเพียงแอปพลิเคชันภายในระบบ Windows และไม่มี กระบวนการบูตของตัวเอง

ฉันจะรีเซ็ตรหัสผ่านของฉันได้อย่างไร


4
คุณลืมรหัสผ่านใด? รหัสผ่านบัญชี Windows ของคุณ?
David Foerster

ตัวอย่าง "ตัวเลือกการบูต" จะเป็นการบู๊ตไปยังโหมดผู้ใช้เดี่ยวโดยการตั้งค่าเคอร์เนล cmdline เป็น "single" ผ่าน grub สำหรับผู้ที่อยากรู้อยากเห็น
kevinf

1
ใน WSL2 (windows 10 v1903) การเปลี่ยนแปลง จาก cmd หรือ powershell ให้เริ่มต้นเชลล์ ubuntu เป็น root: wsl -user root จากนั้น: passwd <ชื่อผู้ใช้ของคุณ> ออกจาก wsl ครั้งต่อไปที่ ubuntu shel เปิด: sudo ls จะยอมรับรหัสผ่านรูทใหม่
jdh

คำตอบ:


323
  • เรียกใช้bashและจดบันทึกชื่อผู้ใช้ Linux ของคุณ (ไม่จำเป็นต้องตรงกับชื่อผู้ใช้ Windows ของคุณ) ดูที่ฉันจะค้นหาชื่อผู้ใช้ของฉันได้อย่างไร
  • ปิด Bash บน Ubuntu หากกำลังทำงาน (หรือคำสั่งถัดไปจะล้มเหลว)
  • ในพรอมต์คำสั่ง Windows admin ( Super+ X, A) เปลี่ยนผู้ใช้เริ่มต้นเป็นรูท:

    ubuntu config --default-user root
    

หากคุณใช้ Ubuntu 18.04 ใน WSL คำสั่งจะเปลี่ยนเป็นubuntu1804ดังนั้น

ubuntu1804 config --default-user root
  • ตอนนี้ทุบตีบน Ubuntu บน Windows จะบันทึกคุณในฐานะรูทโดยไม่ต้องถามรหัสผ่าน
  • ใช้passwdคำสั่งใน Bash เพื่อเปลี่ยนรหัสผ่านผู้ใช้ (ผู้ใช้ที่คุณต้องการรีเซ็ตรหัสผ่าน):

    passwd your_username
    
  • เปลี่ยนผู้ใช้เริ่มต้นกลับไปเป็นผู้ใช้ปกติในพรอมต์คำสั่งของ Windows

    ubuntu config --default-user  your_username
    

หากคุณใช้ Ubuntu 18.04 ใน WSL คำสั่งจะเปลี่ยนเป็นubuntu1804ดังนั้น

ubuntu1804 config --default-user your_username

ดูวิดีโอทั้งหมดเพื่อกู้คืนรหัสผ่านของคุณ Windows Subsystem Linux https://youtu.be/dTR232yvDCE

หมายเหตุ 1: ระบบย่อยที่ใช้ในวิดีโอไม่ใช่ Ubuntu แต่เป็น Kali Linux ดังนั้นความแตกต่างในคำสั่ง

หมายเหตุ 2: ถ้าคุณยังคงใช้ระบบย่อย Ubuntu เดิมที่มาพร้อมกับการปรับปรุงครบรอบการใช้คำสั่งlxrun ขอแนะนำให้อัพเกรดเป็นระบบย่อยที่เผยแพร่ผ่าน Microsoft Store)


7
lxrunใช้สำหรับรุ่นเบต้าของ WSL หากคุณติดตั้งอูบุนตูจากร้านค้า app ubuntu config --default-user rootที่คำสั่งคือ
จบ Tjahjono

2
ใช่นี้เป็นทางเลือก Failed to set default user to: rootแต่ฉันได้ข้อผิดพลาด:
เคอร์บี้

2
@Kirby: คุณต้องออกจากระบบเชลล์ WSL ก่อนรันคำสั่งในพรอมต์คำสั่ง Windows
dr01

1
ฉันยังคงได้รับError: 0x80070057 The parameter is incorrectดังนั้นฉันจึงติดตามคิวของ @ dr01 และวิ่งubuntuใน PowerShell จากlogoutนั้นกำหนดค่าผู้ใช้เริ่มต้นอีกครั้ง สำเร็จ👍
skia.heliou

2
หากคุณติดตั้งอูบุนตู 18.04 ใน WSL คำสั่งเป็นแทนubuntu1804 ubuntuหวังว่านี่จะช่วยลดรอยขีดข่วนได้บ้าง
Indominus

53

ข้างต้นไม่ทำงาน แม้หลังจากเปลี่ยนผู้ใช้เริ่มต้นแล้ว Bash จะเปิดขึ้นพร้อมกับผู้ใช้ของฉันเสมอ

ดังนั้นฉันจึงทำเช่นนี้ซึ่งทำงาน:

  1. แก้ไขไฟล์นี้ (ใน notepad หรือ notepad ++):

    %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. เริ่มทุบตีอีกครั้งด้วยสิทธิ์พิเศษและตั้งรหัสผ่านของคุณ

     sudo bash
     passwd <your-user-name> 
    

    ตอนนี้คุณสามารถตั้งรหัสผ่านใหม่โดยไม่ต้องป้อนรหัสผ่านก่อนหน้า


9
ใช้งานได้ แต่ไดเรกทอรีอย่างเป็นทางการตอนนี้คล้ายกับ% localappdata% \ แพคเกจ \ CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc \ LocalState \ rootfs \ etc \ shadow
Mauro Destro

11
นี่คือคำตอบที่ดีที่สุดโดยไกล ในการค้นหาเส้นทางไปยังshadowไฟล์ของคุณคุณสามารถใช้สิ่งที่น่ารังเกียจ PowerShell นี้: Get-ChildItem -Path C:\ -Filter shadow -Recurse -ErrorAction SilentlyContinue -Forceซึ่งเป็นเวอร์ชั่นที่ละเอียดมากfind /mnt/c/ -name shadowทั้งในการประมวลผลและผลลัพธ์ ไม่ต้องใช้สิทธิ์ผู้ดูแลในการแก้ไขไฟล์ แต่ให้แน่ใจว่าปิดหน้าต่างทุบตีของคุณก่อนที่จะทำ
Russ

1
นี่คือผู้ชนะ! ทำงานได้ดีเมื่อคำตอบแรกไม่ได้
Kim

1
คำตอบที่ยอมรับทำให้ฉัน 'ข้อผิดพลาด: 0x80070057 พารามิเตอร์ไม่ถูกต้อง' (และไม่คอนโซลไม่ได้อยู่ในโหมดดั้งเดิม) สิ่งนี้ทำงานได้อย่างราบรื่น
Cristi Diaconescu

1
คำตอบนี้ทำงานตรงตามที่อธิบายไว้ข้างต้น คำตอบแรกไม่ได้ผลสำหรับฉัน
Shanemeister

27

แก้ไขสิ่งนี้ไม่ทำงานอีกต่อไปถ้าคุณมีการกระจาย WSL ที่ติดตั้งร้านค้า

เพื่อเพิ่มคำตอบของ 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

รับ E rror: 0 x 8 0 0 7 7 0 0 0 2 ใน powershell
Nitin Sawant

1

ในขณะที่ 2019-09-05 มีกระบวนการที่ง่ายกว่าคำตอบที่มีอยู่ (ซึ่งส่วนใหญ่ล้าสมัยไปแล้วพวกเขาไม่ทำงานเลย)

ใน Windows พร้อมรับคำสั่งของผู้ดูแลระบบ ( Super+ X, A) คุณสามารถล็อกอินเข้าสู่บัญชี root อูบุนตูกับ

wsl --user root

จากนั้นเปลี่ยนรหัสผ่านตามปกติด้วย

passwd

รหัสผ่านใหม่ถามคุณแบบโต้ตอบ (สองครั้ง)


0

สำหรับผู้ที่ลืมรหัสผ่านรูทสิ่งที่ได้ผลสำหรับฉันคือการอัปเดตเป็น Ubuntu 18.04 LTS ผ่านทาง Windows Store หมายเหตุที่เก็บ windows มีสองตัวเลือกที่แตกต่างกัน:

  1. อูบุนตู
  2. Ubuntu 18.04 LTS ( เลือกอันนี้ )

ในการตรวจสอบเวอร์ชั่นปัจจุบันของคุณให้เรียกใช้สิ่งต่อไปนี้ในฐานะผู้ใช้:

ที่พร้อมท์คำสั่งให้ป้อน:

cat /etc/*release

คุณควรเห็นบรรทัดในผลลัพธ์ที่ระบุว่า:

DISTRIB_RELEASE=16.01

หากคุณเห็นสิ่งนั้นแน่นอนอัปเดตเป็น 18.04และมันจะแจ้งให้คุณสร้างข้อมูลประจำตัว UNIX ใหม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.