Ich habe die Datei "/ etc / passwd" gelöscht und kann mich nicht anmelden

22

Ich habe versucht, meinen Benutzernamen und auch mein Home-Verzeichnis ( /home/username) zu ändern, und mein System stürzte ab. Ich habe die passwdDatei gelöscht , aber ich hatte eine Sicherungskopie mit dem Namen passwd_bkp. Ich habe versucht , diese zu benennen , passwd_bkpwie passwdund es hat nicht funktioniert. Es wurden keine Befehle ausgeführt ... Ich befand mich in einem Terminalfenster.

Ich habe mein System neu gestartet und kann mich jetzt nicht anmelden. GRUB bietet zwei Optionen: Linux und Wiederherstellungsmodus.

Ich habe versucht, eine Sitzung als root zu öffnen, aber es heißt, dass das Dateisystem beschädigt ist. Ich kann nicht auf meine Dateien zugreifen.

Habe ich alle meine Dateien verloren?

joao rodrigo leao
quelle
1
Auf Ihre nachfolgende Frage: Ersetzen Sie Ihr Kennwort mithilfe der Wiederherstellungstechnik. Siehe: askubuntu.com/questions/24006/…
david6
1
@ david6 Wenn sich ein Benutzer nicht anmelden kann, weil keine /etc/passwdDatei vorhanden ist , kann das Kennwort auch nicht zurückgesetzt werden. Sie müssen die passwdDatei wiederherstellen (oder neu erstellen) . Und sobald dies erledigt ist, muss das Passwort im Allgemeinen nicht mehr zurückgesetzt werden.
Eliah Kagan
@Eliah Kagan: Einverstanden, aber ich beantwortete die Folgefrage, nachdem / etc / passwd (angeblich) von einer Sicherungskopie wiederhergestellt wurde.
David6
Sie müssen den Fehler genauer beschreiben.
Psusi

Antworten:

32

Nein, angesichts Ihrer Beschreibung haben Sie keine Ihrer Dateien verloren (außer den Dateien /etc/passwd, die Sie gelöscht, aber gesichert haben).

Booten Sie eine Ubuntu Live-CD / DVD oder ein Live-USB-Flash-Laufwerk. Wählen Sie Try Ubuntu(nicht Install Ubuntu). Öffnen Sie beim Laden des Desktops ein Nautilus-Fenster (Dateibrowser). Die Partition für Ihr Ubuntu-System finden Sie unter Devices. Klicken Sie darauf, um es zu montieren.

Jetzt können Sie das Backup wiederherstellen. Sie müssen es jedoch als root ausführen. Hier ist eine ziemlich einfache Möglichkeit, dies zu tun.

  1. Öffnen Sie ein Terminalfenster ( Ctrl+ Alt+ T). Geben Sie im Terminal cddie SpaceTaste ein und drücken Sie sie Enternoch nicht.

  2. Suchen Sie in Nautilus das etcVerzeichnis im installierten Ubuntu-System. (Dies ist nicht dasselbe wie das etcVerzeichnis für die Live-CD. Das etcVerzeichnis im installierten Ubuntu-System befindet sich in der Partition, die Sie gerade gemountet haben.)

  3. Ziehen Sie dieses etcVerzeichnis in das Terminal, um den vollständigen Pfad in das Terminal einzufügen, und führen Sie den cd ...Befehl aus.

  4. Drücken Sie Enter, um den Befehl auszuführen. Jetzt befinden Sie sich in dem Verzeichnis, in dem sich Ihre passwdDatei befindet. Ich gehe davon aus, dass sich Ihre Sicherungsdatei passwd_bkpauch hier befindet.

  5. Führen Sie diesen Befehl aus:

    sudo cp passwd_bkp passwd
    

Dadurch wird die passwdDatei von Ihrem Backup wiederhergestellt. Jetzt sollten Sie in der Lage sein, einen Neustart durchzuführen, die CD / DVD oder das USB-Flash-Laufwerk zu entfernen und Ihr installiertes Ubuntu-System neu zu starten. Ihr installiertes Ubuntu-System sollte wieder funktionieren.


Für die Zukunft sollte man sich bewusst sein , dass es nicht manuell bearbeiten wird empfohlen /etc/passwd, /etc/group, /etc/shadow, oder /etc/gshadow. Verwenden Sie stattdessen die im Lieferumfang von Ubuntu enthaltenen Dienstprogramme, um Änderungen an Benutzern und Gruppen auf Ihrem System vorzunehmen. Ihnen ist wahrscheinlich bekannt, dass Sie dies in den Systemeinstellungen oder mit bearbeiten können users-admin. Es gibt aber auch sehr leistungsfähige Befehlszeilen-Dienstprogramme, die immer noch viel sicherer und einfacher sind als das manuelle Bearbeiten der Konfigurationsdateien. Hier ist die Dokumentation der wichtigsten Hilfsprogramme in Ubuntu:

Sie können Ihren Benutzernamen mit einigen dieser Dienstprogramme ändern . Diese Antwort erklärt einen Weg im Detail. Sie sollten sich jedoch darüber im Klaren sein, dass einige Anwendungen davon ausgehen, dass Ihr Benutzername derselbe bleibt. Das Ändern Ihres Benutzernamens kann daher zu Problemen führen.

Eliah Kagan
quelle
Ich danke dir sehr. Es ist vier Uhr morgens hier in Südbrasilien ... Ich war so besorgt, dass ich nicht schlafen konnte. Ich werde das versuchen ...
Joao Rodrigo Leao
2
Wenn Sie keine Sicherung erstellt haben, verwenden Sie /etc/passwd-oder /var/backups/passwd.bak. Stellen Sie sicher, dass Sie die richtigen Berechtigungen festlegen. Beispiel:sudo install -m644 /etc/passwd- /etc/passwd
Lekensteyn
4

Alternativ zum Booten einer Live-CD können Sie eim Grub-Menü auf drücken , um den Rettungsmodus-Eintrag zu bearbeiten und init=/bin/shden Kernel-Argumenten hinzuzufügen . Dadurch gelangen Sie direkt zu einer Root-Shell, in der Sie die Sicherungsdatei nach dem erneuten Bereitstellen des Dateisystems mit Lese- / Schreibzugriff wieder in das Original kopieren können mount -o remount,rw /.

Psusi
quelle
1
Sind Sie sicher, dass dies funktionieren wird? Ohne /etc/passwd, gibt es keine Benutzer root genannt, und kein Benutzer mit uid = 0 . Funktionieren die benötigten Dienstprogramme unter diesen ungewöhnlichen Bedingungen?
Eliah Kagan
1
@EliahKagan, es gibt immer einen Benutzer mit der UID = 0, da dies die UID ist, mit der der Kernel den ersten Prozess startet. cpoder mvbrauche / etc / passwd nicht.
Psusi
Das hat meinen blöden Hintern gerettet! Ich manuelle Bearbeitung auf / etc / shadow in Bezug auf Crontab Zeug. Ich wusste nicht, dass man sich nicht mit 'Schatten' anlegen kann .... Ich dachte, dass ich gefickt wurde, aber Gott sei Dank für @psusi .... Ich habe das Grub-Menü für die Wiederherstellung hinzugefügt / bin / sh, wie er sagte , folgte seinem Reittier und kopierte gerade den Shawdow aus / var / backups über den korrupten in / etc ... Gut wie neu .. danke
rowntreerob
2

Sie sollten zuerst die Antwort von Eliah Kagan lesen, bevor Sie mit dem Lesen dieser Antwort fortfahren. Er erklärt, wie man mit der Situation umgeht und warum es normalerweise nicht notwendig ist, / etc / passwd manuell zu ändern.

Wie auch immer, wenn Sie wirklich wissen, was Sie tun und manuell bearbeiten /etc/passwdmüssen , können Sie dies tun, aber Sie sollten die Dateien nicht einfach mit Ihrem bevorzugten Editor ändern. Stattdessen gibt es das Tool

vipw

Aus den Manpages:

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.

Zum Beispiel, wenn Sie eine Benutzer-UID ändern möchten, so weit ich weiß, um die Dateien manuell zu bearbeiten, ist der einzige Weg. Auch wenn Sie ein Benutzerkennwort ändern und dann ohne es zu wissen zu seinem vorherigen zurückkehren möchten, gibt es keinen Weg mit usermododer so. Wenn Sie jedoch das Hash-Kennwort aus der Schattendatei speichern, können Sie das Kennwort des Benutzers ändern und anschließend das Hash-Kennwort erneut hinzufügen, indem Sie die Schattendatei mit bearbeiten vipw -s.

lumbric
quelle
1

Nachdem ich @ EliahKagans Antwort gefolgt hatte, konnte ich mich nicht anmelden lightdmund mein Konto wurde nicht aufgelistet. Ich habe festgestellt, dass die Berechtigung für die passwdDatei nicht ordnungsgemäß eingerichtet wurde. der lightdm benutzer hatte keinen zugriff darauf. So habe ich es behoben:

Melden Sie sich auf ein tty Ctrl+ Alt+F1

Wechseln Sie in das /etcVerzeichnis

cd /etc

Ändern Sie dann die Berechtigungen in 644

sudo chmod 644 passwd

Dann mach ls -la

Die Berechtigungszeichenfolge sollte folgendermaßen aussehen

-rw-r--r--
danidee
quelle
-1

Wenn Sie sich anmelden können, öffnen Sie einfach das Terminal und versuchen Sie Folgendes:

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

Sonst

Booten Sie im Wiederherstellungsmodus oder von Ubuntu Live-CD. Dann mounten Sie Ihr altes Laufwerk:

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

dann neu starten. Das wird kein passwd für root setzen.

Anschließend können Sie sich anmelden, alle Ihre Konten neu erstellen usw.

Sie können auch die Sicherung verwenden, die aufgerufen wird (glaube ich) /etc/passwd-

Edit : (eine andere Methode, die ich noch nicht ausprobiert habe, aber ich denke, sie sollte auch funktionieren)

  • GRUB Escbeim Booten starten ( beim Booten drücken )
  • Drücken Sie eauf (Wiederherstellungsmodus)
  • Drücken Sie eüber die Zeile, die mit dem Kernel beginnt
  • Drücken Sie Spaceund geben Sieinit=/bin/bash
  • Drücken Sie Enter
  • Drücken Sie b
  • Geben Sie an der Eingabeaufforderung Folgendes ein: cp /etc/passwd- /etc/passwd
  • Starten Sie GRUB erneut
  • Drücken Sie eauf (Wiederherstellungsmodus)
  • Drücken Sie eüber die Zeile, die mit dem Kernel beginnt
  • Drücken Sie Spaceund geben Sieinit=/bin/bash
  • Drücken Sie Enter
  • Drücken Sie b
  • Geben Sie an der Eingabeaufforderung Folgendes ein mount -o remount,rw /
  • Typ passwd YOURUSERNAMEHERE(Wenn Sie den Typ Ihres Benutzernamens nicht kennen ls /home(Kleinbuchstaben L und Kleinbuchstaben S) für eine Liste von Benutzern)
  • Geben Sie bei Aufforderung ein neues Passwort ein
  • Starten Sie zum normalen Start neu.

Quelle

Maythux
quelle