Puncte:1

S-au șters toți utilizatorii din WSL

drapel nu

Eu folosesc Wsl Ubuntu 20.04 LTS. Nu știu de ce, dar toți utilizatorii au fost șterși. Am creat un utilizator nou. Mi-aș fi dorit să nu fi făcut

passwd:

tetemp:x:1000:100::/home/tetemp:

si acum

$ adduser root
adduser: Numai root poate adăuga un utilizator sau un grup la sistem.
$ sudo adduser root
sudo: utilizator necunoscut: root
sudo: nu se poate inițializa pluginul de politică

Nu pot schimba passwd-ul pentru că este numai pentru citire.

-Cum pot recupera root.
-Pot sterge tetemp? (wsl începe ca root dacă pot)

drapel in
Puteți șterge imaginea WSL și puteți începe din nou. Acesta ar fi cel mai rapid mod de a face lucrurile din nou operaționale.
NotTheDr01ds avatar
drapel vn
Ce se întâmplă atunci când rulați `wsl` (sau `wsl `)? Tocmai am configurat o nouă instanță Ubuntu, am creat un nou (al doilea) utilizator, am șters totul, în afară de acel utilizator, din `/etc/passwd`. După ieșire, sunt încă UID 0 când pornesc instanța de rezervă și pot edita `/etc/passwd` în acea stare. Totuși, *nu pot* să pornesc ca `wsl -u root`, dar pot fără `-u root`.
Atduyar avatar
drapel nu
@NotTheDr01ds Pot edita passwd-ul pentru că este doar pentru citire.și încerc `-u root` PS C:\Utilizatori\Kullanic> wsl -u root => Utilizator nu a fost găsit.
NotTheDr01ds avatar
drapel vn
@Atduyar Bine, îl pot reproduce acum, cel puțin. Cred că a trebuit să adaug utilizatorul *după* ștergerea `/etc/passwd`. Ultima dată când am adăugat utilizatorul în timp ce `/etc/passwd` era încă intact, apoi am șters toate liniile *dar* utilizatorul `tetemp`.
Puncte:0
drapel vn

Este greu. Obisnuitul rădăcină wsl -u mecanismul de recuperare nu va funcționa fără rădăcină utilizator în /etc/passwd, și atunci când tetemp a fost adăugat, a devenit utilizatorul implicit (cu nr sudo permisiuni).

Văd două căi înainte, cel puțin. Fie creați o instanță nouă (și copiați fișierele peste), fie încercați să o recuperați pe cea ruptă:

  • În primul rând, după ce am încercat acest lucru într-o instanță de testare, eu poate sa accesați în continuare instanța sub Windows folosind \wsl$\Ubuntu cale. Asta nu te va lăsa să repari /etc/passwd, dar cel puțin vă va permite să copiați toate fișierele pe care trebuie să le recuperați din instanță.

    Puteți instala oa doua instanță a aceleiași distribuții Ubuntu pe care ați instalat-o din Magazin:

    1. Porniți PowerShell ca administrator

    2. Alerga:

       Get-ChildItem -Recurse „C:\Program Files\WindowsApps\” | Unde-Obiect {$_.Name -eq 'install.tar.gz' }
      
    3. Ieșirea va avea locația install.tar.gz care a fost folosit pentru a crea instanța originală.

    4. Creați un director în care va fi creată noua instanță. Eu folosesc ceva de genul %userprofile%\WSL\NewUbuntu.

    5. De la un PowerShell obișnuit, non-admin, rulați

      wsl --import NewUbuntu ".\path\to\WSL\NewUbuntu" "<cale_with_tarball>\intall.tar.gz" --versiunea 2`
      
    6. Porniți noua instanță folosind wsl -d NewUbuntu. Tu vei fi rădăcină în mod implicit.

    7. Adăugați utilizatorul dvs. obișnuit cu:

      adduser <nume utilizator>
      usermod -aG adm,dialout,cdrom,floppy,sudo,audio,dip,video,plugdev,netdev <nume utilizator>
      

      Acesta este setul de grupuri care este creat pentru utilizatorul implicit în Ubuntu pe WSL.

    8. Faceți acest utilizator implicit în WSL prin creare /etc/wsl.conf după cum este menționat în acest raspuns.

    Acum ar trebui să puteți copia fișiere din vechea instanță (\wsl$\Ubuntu) la cel nou (\wsl$\NewUbuntu).

    În cele din urmă, pentru a șterge copia veche, când sunteți sigur ai scos toate fișierele critice, wsl --unregister <nume distribuție>.

Există opțiuni posibile la care mă gândesc și care ți-ar putea permite reparare/recuperare instanța existentă. Nu le-am testat pas cu pas, dar majoritatea tot aici este ceva ce am făcut la un moment dat:

  • Pe acesta nu o recomand, deoarece are potenţial pentru a lăsa instanța într-o stare instabilă în cele din urmă:

    • Convertiți instanța în WSL1 folosind wsl --set-version Ubuntu 1
    • În Windows, navigați la locația sistemului de fișiere suprapus WSL1 în %userprofile%\AppData\Local\Packages\Canonical...\LocalState\rootfs\etc\passwd.
    • Repară-ți /etc/passwd folosind o aplicație Windows care se ocupă de sfârșiturile de linie Linux. Din nou, acest lucru poate fi problematic, așa cum poate fi în cele din urmă provoca coruperea sistemului de fișiere în WSL. S-ar putea să fie cel mai ușor și mai sigur șterge cel passwd fișier, deoarece credem că acest lucru vă va permite să vă conectați din nou ca UID 0 și apoi să recreați rădăcină utilizator.
    • Convertiți-l înapoi în WSL2, dacă doriți.
  • Sau, utilizați o altă instanță pentru a remedia prima:

    • Creați un tarball al instanței dvs. rupte cu wsl --export Ubuntu fixme.tar.

    • Reveniți la prima opțiune de mai sus, unde am creat o instanță nouă și faceți acești pași. Dar numiți instanța ceva de genul „UbuntuTemp”.

    • În acea instanță nouă (temporară):

      mkdir ~/fixme
      cd ~/fixme
      sudo tar --xattrs-include="security.capability" -xvf /mnt/c/path/to/fixme.tar
      sudo cp /etc/passwd ~/fixme/etc/passwd
      sudo tar --xattrs -cvf /mnt/c/path/to/fixed.tar .
      
    • Ieșiți din instanța temporară Ubuntu.

    • În PowerShell, creați un director pentru instanța Ubuntu fixă, apoi:

      wsl --import Ubuntu20_04 "path/you/just/created" "path/to/fixed.tar" --versiunea 2
      
    • Porniți instanța fixă ​​(sperăm) cu wsl -d Ubuntu20_04.

    • Setați utilizatorul obișnuit ca utilizare implicită /etc/wsl.conf pe acest raspuns.

    • Presupunând că funcționează corect, setați instanța ca implicită folosind:

      wsl --set-default Ubuntu20_04
      

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.