Wie kann ich die Datei nach dem versehentlichen Umbenennen von / etc wieder umbenennen?

36

Ich benutze Ubuntu 18.04.

Ich habe den /etcOrdner in umbenannt apache2. Das war mein größter Fehler

Jetzt kann ich es nicht zurück umbenennen, weil ich es verwenden muss sudo, aber wenn ich es versuche, erhalte ich den Fehler

sudo: unknown uid 1000

Wie kann ich dieses Problem beheben? Ich habe kein Live-System, von dem aus ich booten kann, und im Wiederherstellungsmodus öffnet sich das Root-Terminal, schließt sich jedoch und sagt cannot open password database:

Waschbär
quelle
17
Booten Sie von einem Installationsmedium, wählen Sie "Try Ubuntu", hängen Sie Ihr Root-Dateisystem ein /mnt, benennen Sie es um und starten Sie es neu.
AlexP
Wie boote ich ein Installationsmedium?
Waschbär
@Zanna, Shift hat mir kein Menü gezeigt. Vielleicht kann ein anderer Knopf es öffnen?
Waschbär
@Zanna, Wiederherstellungsmenü -> root öffnet das Terminal, aber es heißt, dass die Passwortdatenbank nicht geöffnet und geschlossen werden kann
Racoon
@ Zanna, nein, nicht :(
Racoon

Antworten:

62

Eine einfache Möglichkeit, solche Probleme zu beheben, besteht häufig darin, von einem Live-System zu booten, die Root-Partition /mnt anzuhängen und die Datei dann umzubenennen.

Wenn Sie kein Live-System haben oder keine Möglichkeit haben, eines zu erstellen, oder keinen physischen Zugriff auf das System haben, aber neu starten und das GRUB-Menü aufrufen können, können Sie mit dem GRUB-Editor eine Root-Shell abrufen und umbenennen die Datei.

Starten Sie das Gerät neu oder schalten Sie es aus, und schalten Sie es ein. Wenn Sie das GRUB-Menü beim Booten normalerweise nicht sehen, drücken Sie Shiftoder Esc, um zum GRUB-Menü zu gelangen.

Bewegen Sie den Cursor nach unten zu Advanced Options for Ubuntu und drücken Sie enterund dann e, um die Startoptionen zu bearbeiten (nur einmal - Änderungen hier sind nicht dauerhaft, sodass wir danach nicht aufräumen müssen).

Sie sehen einen Bildschirm, der ungefähr so ​​aussieht 1 :

Screenshot des GRUB-Menüeditors

Bewegen Sie den Cursor nach unten zu der Zeile, die mit beginnt, linuxund bewegen Sie den Cursor dann an das Ende dieser Zeile oder an eine beliebige Stelle unter den dortigen Kernel-Boot-Parametern. Stellen Sie sicher, dass Sie sich in der richtigen Zeile befinden, und geben Sie dies sorgfältig ein, da das System möglicherweise nicht gestartet werden kann, wenn es nicht vorhanden ist /etc.

Fügen Sie den Text hinzu init=/bin/bashund drücken Sie, um F10zu starten.

Dies startet das System mit einer Bash-Shell als Init. Sie erhalten eine Root-Shell und das Dateisystem ist schreibgeschützt. 2 Geben Sie den Befehl ein, um das Dateisystem beschreibbar zu machen

mount -o remount,rw /

Jetzt können Sie umbenennen /etc(möchten Sie vielleicht lszuerst)

mv /apache2 /etc

Jetzt können Sie den Computer neu starten oder den Start normal abschließen, indem Sie die Root-Shell durch das normale Init-System 3 ersetzen lassen :

exec systemd 

Ich habe dieses Verfahren auf Ubuntu MATE 18.04 getestet.


1 Vielen Dank an Kulfy für den Erhalt eines qualitativ hochwertigen Screenshots des GRUB-Editors von VirtualBox!
2 Obwohl PATH /etcin diesem Szenario nicht über die Konfigurationsdateien festgelegt werden kann , legt Bash automatisch einen fest .
3 Wenn exec systemdes bei Ihnen nicht funktioniert, exec /sbin/initsollten Sie den Trick machen. Wenn nicht, readlink -e /sbin/initsollte der Pfad zu dem Init-Programm angegeben werden, das ausgeführt werden soll, das Sie dann execmit seinem vollständigen Pfad verwenden können. Wenn Sie so nicht vorgehen können, geben Sie einfach ein reboot.

Zanna
quelle
4
Sehr gründlich mit Screenshot +1 :)
WinEunuuchs2Unix
3
@Kulfy vielen Dank! Das ist wunderbar: DI kann VB nicht verwenden, da ich nicht genug RAM habe. Sehr nett von Ihnen zu helfen, meine Antwort zu verbessern
Zanna
3
Ich denke, ich habe den Screenshot viel zu groß aufgenommen: P ;-) und danke für die Screenshot-Credits :)
Kulfy
1
@Racoon Gern geschehen, ich freue mich, dass Sie den Fehler behoben haben :)
Zanna
Versucht es zu testen, funktioniert aber nicht in Ubuntu 18.04.Desktop. Befolgen Sie die Anweisungen wörtlich . Funktioniert nicht. Nach F10nur wenigen Zeilen erscheint und stoppt bei leerem Bildschirm. Kannst du etwas vorschlagen?
Vijay
8

Wenn Sie einen Live-USB-Stick haben, sollten Sie in der Lage sein, darauf zu booten und Ihr vorhandenes Dateisystem zu mounten. Benennen Sie es dann /etcvon dort aus um. Hier finden Sie eine Anleitung zum Erstellen eines Live-USB-Geräts, falls erforderlich.

Nach dem Booten auf den Live-USB-Stick (bei Verwendung eines Ubuntu 18.04-Laufwerks) wählen Sie "Ubuntu ohne Installation testen". Dadurch erhalten Sie im Wesentlichen eine vollständige Instanz einer Ubuntu-Installation, die nach dem Herunterfahren nicht mehr erhalten bleibt. Nach dem Booten haben Sie einige Möglichkeiten:

Befehlszeilenmethode

Öffnen Sie ein Terminal und führen Sie es aus lsblk. Suchen Sie nach dem Laufwerk Ihrer ursprünglichen Installation und notieren Sie sich, um welche Nummer es sich handelt (/ dev / sd #).

Erstellen Sie dann einen Einhängepunkt für das Laufwerk mit mkdir -p /mnt/directoryund hängen Sie das Laufwerk mit ein sudo mount /dev/sd# /mnt/directory. Navigieren Sie zu dem Verzeichnis mit cd /mnt/directoryund Sie sollten sich jetzt im Stammverzeichnis Ihrer Installation befinden, aber jetzt mit einem funktionierenden sudoBefehl. Führen Sie sudo mv apache2 etcIhr hypothetisch funktionierendes Betriebssystem aus und starten Sie es neu.

Grafische Art und Weise

Öffnen Sie das Festplatten-Dienstprogramm, indem Sie nach Festplatten suchen. Wählen Sie das Volume aus, das Ihrem Installationslaufwerk ähnelt, und hängen Sie es ein. Öffnen Sie den Dateimanager und wählen Sie das bereitgestellte Volume aus, klicken Sie mit der rechten Maustaste auf Ihren /apache2Ordner, benennen Sie ihn in um und starten Sie ihn /etcneu.

Minty
quelle
"Graphical Way" funktioniert nicht, weil es keine Option "Rename" für Rt gibt. klicken.
Vijay
1
@Vijay Das liegt wahrscheinlich an den Dateiberechtigungen, dass Sie den Dateimanager als root öffnen müssen, um es grafisch darzustellen. Führen Sie dazu den Befehl sudo nautilusvom Terminal aus. (Ubuntu verwendet "nautilus" als Dateimanager, genauso wie Windows "explorer" verwendet.)
AJMansfield
2
Natürlich spielt @AJMansfield auf einem Live-System keine Rolle, aber im Allgemeinen sollten wir es verwenden sudo -H nautilus, um zu vermeiden, dass root Eigentümer von Konfigurationsdateien wird $HOME, und sie möglicherweise für Programme unzugänglich machen, die als normaler Benutzer ausgeführt werden. Das ist Ihnen wahrscheinlich bewusst, aber ich erwähne es für andere Leser.
Zanna
6
  1. Stellen Sie den bootfähigen USB wie hier gezeigt her.

  2. Booten Sie von USB, indem Sie wie hier gezeigt die Taste drücken .

  3. Finden Sie Ihre Dateisystempartition heraus, indem Sie ausführen gparted. Angenommen, es ist SDXY.

  4. Auf dem Terminal ausführen sudo mount /dev/sdxy /mnt

  5. Auf dem Terminal ausführen sudo mv /mnt/apache2 /mnt/etc

  6. Überprüfen Sie Ihr Dateisystem in / mnt auf die Namensänderung.

  7. Auf dem Terminal ausführen sudo reboot

  8. Wenn Sie dazu aufgefordert werden, entfernen Sie den USB-Stick und drücken Sie die Eingabetaste

Vijay
quelle
@Kulfy Ich habe es versucht, aber es funktioniert nicht ohne sudo. Sehen Sie hier .
Vijay
Dies liegt daran, dass sda2 mit sudo gemountet wurde und daher nur sudo Aktionen ausführen kann. Wenn Sie jedoch das Laufwerk mit Nautilus mounten (ohne besondere Erlaubnis), können Sie Aufgaben ohne sudo ausführen.
Kulfy
Ubuntu @ ubuntu: ~ $ mount / dev / sda2 / mnt mount: das kann nur root ubuntu @ ubuntu: ~ $
Vijay
1
AFAIK das mountProgramm ist sehr streng und muss immer als root ausgeführt werden; Die einzige Ausnahme ist, wenn sich das Dateisystem in befindet fstabund über die userOption verfügt. Das Programm udisksctlermöglicht normalen Benutzern, Geräte beispielsweise mithilfe von bereitzustellen udisksctl mount -b /dev/sda1(es erstellt einen geeigneten Bereitstellungspunkt in /media/$USER/). Ich habe nicht versucht, udisksctlvon einem Live-System aus zu verwenden, aber auf einem Live-System ist man immer ein privilegierter Benutzer, der in der Lage ist, sudoohne Kennwort zu arbeiten, sodass keine Dienstprogramme erforderlich udisksctlsind, die ansonsten so nützlich sind
Zanna