Zresetuj hasło w Ubuntu / Linux Bash w systemie Windows

191

Zainstalowałem Linux Bash na Windows 10 (dostępny od Microsoft), ale zapomniałem hasła.

Szukałem rozwiązania, ale znajduję tylko sugestie, które wymagają zrobienia czegoś przed uruchomieniem systemu, na przykład uzyskania dostępu do trybu odzyskiwania, ale to nie zadziała w tym przypadku, ponieważ Ubuntu to tylko aplikacja w systemie Windows i nie ma własny proces rozruchu.

Jak mogę zresetować hasło?

Maheedhar KV
źródło
4
Które hasło dokładnie zgubiłeś? Twoje hasło do konta Windows?
David Foerster,
przykładową „opcją uruchamiania” byłoby uruchomienie systemu w trybie pojedynczego użytkownika poprzez ustawienie cmdline jądra na „single” poprzez grub. Dla ciekawskich.
kevinf
1
W WSL2 (Windows 10 v1903) to się zmieniło. Z cmd lub powershell, uruchom powłokę Ubuntu jako root: wsl -user root Następnie: passwd <twoja nazwa użytkownika>. zamknij wsl. Następnym razem, gdy otworzy się Ubuntu Shel: sudo ls zaakceptuje nowe hasło roota.
jdh

Odpowiedzi:

323
  • Uruchom bashi zanotuj swoją nazwę użytkownika dla systemu Linux (nie musi ona być zgodna z nazwą użytkownika dla systemu Windows), zobacz Jak mogę znaleźć swoją nazwę użytkownika?
  • Zamknij Bash na Ubuntu, jeśli jest uruchomiony (lub następne polecenie się nie powiedzie).
  • W wierszu polecenia administratora systemu Windows ( Super+ X, A) zmień domyślnego użytkownika na root:

    ubuntu config --default-user root
    

Jeśli używasz Ubuntu 18.04 w WSL, polecenie zmieniło się na ubuntu1804, więc

ubuntu1804 config --default-user root
  • Teraz Bash na Ubuntu w systemie Windows loguje Cię jako root bez pytania o hasło
  • Użyj passwdpolecenia w Bash, aby zmienić hasło użytkownika (użytkownika, którego hasło chcesz zresetować):

    passwd your_username
    
  • Zmień domyślnego użytkownika z powrotem na normalnego użytkownika w wierszu polecenia systemu Windows

    ubuntu config --default-user  your_username
    

Jeśli używasz Ubuntu 18.04 w WSL, polecenie zmieniło się na ubuntu1804, więc

ubuntu1804 config --default-user your_username

Obejrzyj cały film, aby odzyskać hasło Podsystem Windows Linux https://youtu.be/dTR232yvDCE

Uwaga 1: Podsystem użyty w wideo nie jest Ubuntu, ale Kali Linux. Stąd różnica w poleceniu.

Uwaga 2: Jeśli nadal korzystasz z oryginalnego podsystemu Ubuntu, który został dostarczony z Anniversary Update, użyj polecenia lxrun . Zalecana jest aktualizacja do wersji podsystemu dystrybuowanej za pośrednictwem Microsoft Store).

Tmu
źródło
7
lxrundotyczy wersji beta WSL. Jeśli zainstalujesz Ubuntu ze sklepu z aplikacjami, komenda jest ubuntu config --default-user root.
Endy Tjahjono,
2
Tak, to jest alternatywny sposób, ale mam błąd: Failed to set default user to: root.
Kirby,
2
@ Kirby: przed uruchomieniem polecenia w wierszu polecenia systemu Windows należy się wylogować z powłoki WSL.
dr01
1
Ciągle dostawałem Error: 0x80070057 The parameter is incorrect, więc skończyłem podążając za wskazówką @ dr01 i uruchomiłem ubuntuPowerShell, a logoutpotem ponownie skonfigurowałem domyślnego użytkownika. Sukces 👍
skia.heliou
2
Jeśli zainstalowałeś Ubuntu 18.04 na WSL, polecenie jest ubuntu1804zamiast ubuntu. Mam nadzieję, że dzięki temu zaoszczędzisz trochę drapania w głowie.
Indominus
53

Powyższe nie działało. Nawet po zmianie domyślnego użytkownika Bash zawsze otwierał się z moim użytkownikiem.

Zamiast tego zrobiłem to, co zadziałało:

  1. Edytuj ten plik (w notatniku lub notatniku ++):

    %localappdata%\lxss\rootfs\etc\shadow
    
  2. Znajdź normalnego użytkownika, na przykład:

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

    i po prostu usuń część skrótu (poniżej części)

    $jsdjksadgfhsdf.saflsdf.sadf.safd
    

    zobaczysz inny skrót - mam nadzieję :) więc powinien on wyglądać tak:

    user1::17299:0:99999:7:::
    
  3. Zapisz plik

  4. Uruchom Bash ponownie z uprawnieniami roota i ustaw hasło

     sudo bash
     passwd <your-user-name> 
    

    Możesz teraz ustawić nowe hasło bez konieczności wprowadzania poprzedniego.

Vladimir Jirasek
źródło
9
to działa, ale oficjalny katalog jest teraz podobny do% localappdata% \ Packages \ CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc \ LocalState \ rootfs \ etc \ shadow
Mauro Destro
11
Jak dotąd najlepsza odpowiedź . Aby znaleźć ścieżkę do shadowpliku, możesz użyć tej obrzydliwości PowerShell: Get-ChildItem -Path C:\ -Filter shadow -Recurse -ErrorAction SilentlyContinue -Forcektóra jest niesamowicie pełną wersją find /mnt/c/ -name shadowzarówno wykonania, jak i wyników. Nie ma potrzeby podwyższonych uprawnień do edycji pliku, ale upewnij się, że okno bash jest zamknięte, zanim to zrobisz.
Russ
1
To jest zwycięzca! Działa świetnie, gdy pierwsza odpowiedź nie.
Kim
1
Zaakceptowana odpowiedź dała mi komunikat „Błąd: 0x80070057 Parametr jest niepoprawny.”. (i nie, konsola nie była w trybie starszej wersji). To działało bezproblemowo;
Cristi Diaconescu
1
Ta odpowiedź działała dokładnie tak, jak opisano powyżej. Pierwsza odpowiedź nie zadziałała dla mnie.
Shanemeister
27

Edycja To już nie działa, jeśli masz zainstalowaną w sklepie dystrybucję WSL.

Aby dodać do odpowiedzi Tmu, oto skrypt Powershell ( gist ), który automatyzuje proces (w tym automatycznie wykrywa bieżącą domyślną nazwę użytkownika)

# 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
Richard Szalay
źródło
uzyskiwanie e rrrr: 0 x 8 0 0 7 0 0 0 2 w PowerShell
Nitin Sawant
1

Od dnia 09.09.2019 proces jest znacznie prostszy niż istniejące odpowiedzi (które są w większości tak nieaktualne, że w ogóle nie działają).

W wierszu polecenia administratora systemu Windows ( Super+ X, A) możesz zalogować się do konta root Ubuntu za pomocą

wsl --user root

Następnie zmień hasło w zwykły sposób za pomocą

passwd

który interaktywnie prosi o nowe hasło (dwa razy).

Nikt
źródło
0

Dla tych z was, którzy stracili hasło roota, działało dla mnie uaktualnienie do Ubuntu 18.04 LTS za pośrednictwem Windows Store. Uwaga: sklep Windows ma dwie różne opcje:

  1. Ubuntu
  2. Ubuntu 18.04 LTS ( Wybierz ten )

Aby sprawdzić swoją bieżącą wersję, uruchom następujące polecenie jako dowolny użytkownik:

W wierszu polecenia wprowadź:

cat /etc/*release

Na wyjściu powinien pojawić się wiersz:

DISTRIB_RELEASE=16.01

Jeśli to zobaczysz, zdecydowanie zaktualizuj do 18.04 , a pojawi się monit o utworzenie nowych poświadczeń w systemie UNIX.

Janac Meena
źródło