Usunąłem plik „/ etc / passwd” i nie mogę się zalogować

22

Próbowałem zmienić moją nazwę użytkownika, a także katalog domowy ( /home/username) i mój system zaczął się zawieszać. Usunąłem passwdplik, ale miałem kopię zapasową o nazwie passwd_bkp. Próbowałem zmienić nazwę tego passwd_bkpna passwdi to nie działało. Żadne polecenia nie były wykonywane ... Byłem w oknie terminala.

Zrestartowałem system i teraz nie mogę się zalogować. GRUB daje dwie opcje: Linux i tryb odzyskiwania.

Próbowałem otworzyć sesję jako root, ale mówi, że system plików jest uszkodzony. Nie mogę uzyskać dostępu do moich plików.

Czy straciłem wszystkie moje pliki?

joao rodrigo leao
źródło
1
Na kolejne pytanie: zastąp hasło, używając techniki odzyskiwania. Zobacz: askubuntu.com/questions/24006/…
david6
1
@ david6 Gdy użytkownik nie może się zalogować, ponieważ nie ma /etc/passwdpliku , nie można również zresetować hasła. Musisz przywrócić (lub odtworzyć) passwdplik. Po wykonaniu tej czynności na ogół nie trzeba resetować hasła.
Eliah Kagan,
@Eliah Kagan: Zgadzam się, ale odpowiadałem na kolejne pytanie, po tym jak / etc / passwd zostało (podobno) przywrócone z kopii zapasowej.
david6
Będziesz musiał bardziej szczegółowo określić błąd.
psusi

Odpowiedzi:

32

Nie, biorąc pod uwagę opis, nie straciłeś żadnych plików (oprócz tych /etc/passwd, które usunąłeś, ale których kopię zapasową utworzyłeś).

Uruchom Live CD / DVD Ubuntu lub dysk flash USB na żywo. Wybierz Try Ubuntu(nie Install Ubuntu). Po załadowaniu pulpitu otwórz okno Nautilus (przeglądarka plików). Możesz znaleźć partycję dla swojego systemu Ubuntu pod Devices. Kliknij, aby go zamontować.

Teraz możesz przywrócić kopię zapasową. Musisz to jednak zrobić jako root. Oto jeden dość łatwy sposób, aby to zrobić.

  1. Otwórz okno terminala ( Ctrl+ Alt+ T). W Terminalu wpisz cdi wpisz Spaceklucz, ale jeszcze nie naciskaj Enter.

  2. W Nautilus znajdź etckatalog wewnątrz zainstalowanego systemu Ubuntu. (To nie jest to samo, co etckatalog Live CD. etcKatalog wewnątrz zainstalowanego systemu Ubuntu znajduje się na partycji, którą właśnie zamontowałeś.)

  3. Przeciągnij ten etckatalog do terminala, który wklei pełną ścieżkę do terminala, wykonując cd ...polecenie.

  4. Naciśnij, Enteraby uruchomić polecenie. Teraz jesteś w katalogu, który zawierał twój passwdplik. Zakładam, że twój plik kopii zapasowej passwd_bkp, również znajduje się tutaj.

  5. Uruchom to polecenie:

    sudo cp passwd_bkp passwd
    

To przywraca passwdplik z kopii zapasowej, więc teraz powinieneś być w stanie ponownie uruchomić komputer, usunąć dysk CD / DVD lub dysk flash USB i ponownie uruchomić system w zainstalowanym systemie Ubuntu. Zainstalowany system Ubuntu powinien ponownie działać.


Na przyszłość, należy zdawać sobie sprawę, że nie jest zalecany do ręcznej edycji /etc/passwd, /etc/group, /etc/shadow, lub /etc/gshadow. Zamiast tego powinieneś użyć narzędzi dostarczonych jako część Ubuntu, aby wprowadzić wszelkie potrzebne zmiany dla użytkowników i grup w twoim systemie. Prawdopodobnie wiesz, że możesz to edytować w Ustawieniach systemu lub za pomocą users-admin. Istnieją jednak również bardzo wydajne narzędzia wiersza polecenia, które są o wiele bezpieczniejsze i łatwiejsze niż samodzielne edytowanie plików konfiguracyjnych. Oto dokumentacja na temat najbardziej odpowiednich takich narzędzi w Ubuntu:

Możesz zmienić swoją nazwę użytkownika za pomocą niektórych z tych narzędzi. Ta odpowiedź wyjaśnia szczegółowo jeden sposób. Należy jednak pamiętać (co jest obecnie poruszone w komentarzu), że niektóre aplikacje zakładają, że nazwa użytkownika pozostaje taka sama. Dlatego zmiana nazwy użytkownika może powodować pewne problemy.

Eliah Kagan
źródło
Dziękuję bardzo. Jest czwarta rano tutaj, w południowej Brazylii ... Tak się martwiłem, że nie mogłem spać. Spróbuję tego ...
Joao Rodrigo Leao
2
Jeśli nie utworzono kopii zapasowej, spróbuj użyć /etc/passwd-lub /var/backups/passwd.bak. Pamiętaj, aby ustawić prawidłowe uprawnienia. Przykład:sudo install -m644 /etc/passwd- /etc/passwd
Lekensteyn
4

Jako alternatywę dla uruchamiania pliku live, możesz nacisnąć emenu GRUB, aby edytować wpis trybu ratunkowego i dodać init=/bin/shdo argumentów jądra. Spowoduje to przeniesienie Cię bezpośrednio do powłoki głównej, w której możesz skopiować plik kopii zapasowej z powrotem do oryginału po ponownym zamontowaniu systemu plików do odczytu i zapisu mount -o remount,rw /.

psusi
źródło
1
Jesteś pewien, że to zadziała? Bez /etc/passwd, nie ma o nazwie użytkownik root, a nie użytkownik z UID = 0 . Czy potrzebne narzędzia będą działać w tych niecodziennych warunkach?
Eliah Kagan
1
@EliahKagan, zawsze jest użytkownik o identyfikatorze uid = 0, ponieważ jest to identyfikator użytkownika, od którego jądro rozpoczyna pierwszy proces. cplub mvnie potrzebujesz / etc / passwd.
psusi
to uratowało mój głupi tyłek! i ręcznie edytuję w / etc / shadow odnośnie crontab. Nie wiedziałem, że nie ma bałaganu z „cieniem” .... Myślałem, że jestem cholerny ckd, ale dzięki Bogu za @psusi .... Edytowałem menu GRUB do odzyskiwania dodane / bin / sh, jak powiedział , podążył za swoim wierzchowcem i właśnie skopiował shawdow z / var / backups nad uszkodzonym w / etc ... Dobry jak nowy .. dzięki
rowntreerob
2

Powinieneś przeczytać najpierw odpowiedź Eliasza Kagana, zanim przejrzysz tę odpowiedź. Wyjaśnia, jak poradzić sobie z sytuacją i dlaczego zazwyczaj nie trzeba ręcznie zmieniać / etc / passwd.

W każdym razie, jeśli naprawdę wiesz, co robisz i musisz edytować /etc/passwdręcznie , możesz to zrobić, ale nadal nie powinieneś po prostu zmieniać plików za pomocą swojego ulubionego edytora. Zamiast tego jest narzędzie

vipw

Ze stron podręcznika:

The vipw and vigr commands edits the files /etc/passwd and /etc/group,
respectively. With the -s flag, they will edit the shadow versions of those
files, /etc/shadow and /etc/gshadow, respectively. The programs will set
the appropriate locks to prevent file corruption.

Na przykład, jeśli chcesz zmienić identyfikator użytkownika, o ile mi wiadomo, ręczna edycja plików jest jedynym sposobem. Również jeśli chcesz zmienić hasło użytkownika, a następnie powrócić do poprzedniego, nie wiedząc o tym, nie da się tego usermodzrobić. Ale jeśli zapiszesz zaszyfrowane hasło z pliku cienia, zmień hasło użytkownika, które możesz później dodać zaszyfrowane hasło ponownie edytując plik cienia vipw -s.

lędźwiowy
źródło
1

Po otrzymaniu odpowiedzi @ EliahKagan nie udało mi się zalogować, lightdma mojego konta nie ma na liście. Odkryłem, że uprawnienia do passwdpliku nie zostały poprawnie skonfigurowane; użytkownik lightdm nie miał do niego dostępu. Oto jak to naprawiłem :.

Zaloguj się na tty Ctrl+ Alt+F1

przejdź do /etckatalogu

cd /etc

Następnie zmień uprawnienia na 644

sudo chmod 644 passwd

Więc zrób ls -la

ciąg uprawnień powinien wyglądać tak

-rw-r--r--
Danidee
źródło
-1

Jeśli możesz się zalogować, po prostu otwórz terminal i spróbuj tego:

sudo cp /etc/passwd- /etc/passwd
sudo chmod 644 /etc/passwd

Jeszcze

Uruchom komputer w trybie odzyskiwania lub z Ubuntu Live Cd. Następnie zamontuj stary dysk:

mkdir /olddrive
mount /dev/hda5 /olddrive
assuming that your old drive is on /dev/hda5.
then, cd to /olddrive/etc
type:
echo "root::0:0:Superuser:/:/bin/bash" > passwd

następnie uruchom ponownie. To nie ustawi hasła dla roota.

Następnie możesz się zalogować, ponownie utworzyć wszystkie konta itp.

Możesz także użyć kopii zapasowej, która nazywa się (myślę) /etc/passwd-

Edycja : (inna metoda, której wcześniej nie próbowałem, ale myślę, że powinna również działać)

  • Uruchom GRUB podczas uruchamiania (naciśnij Escpodczas uruchamiania)
  • Naciśnij e(tryb odzyskiwania)
  • Naciśnij elinię zaczynającą się od jądra
  • Naciśnij Spacei wprowadźinit=/bin/bash
  • naciśnij Enter
  • naciśnij b
  • W wierszu polecenia wpisz: cp /etc/passwd- /etc/passwd
  • Uruchom ponownie GRUB
  • Naciśnij e(tryb odzyskiwania)
  • Naciśnij elinię zaczynającą się od jądra
  • Naciśnij Spacei wprowadźinit=/bin/bash
  • naciśnij Enter
  • naciśnij b
  • W wierszu polecenia wpisz mount -o remount,rw /
  • Wpisz passwd YOURUSERNAMEHERE(jeśli nie znasz typu swojej nazwy użytkownika ls /home(to jest mała litera L i mała litera S) dla listy użytkowników)
  • Wprowadź nowe hasło w odpowiedzi na monit
  • Uruchom ponownie do normalnego rozruchu.

Źródło

Maythux
źródło