Ich benutze Ubuntu 18.04.
Ich habe den /etc
Ordner 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
:
/mnt
, benennen Sie es um und starten Sie es neu.Antworten:
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 :
Bewegen Sie den Cursor nach unten zu der Zeile, die mit beginnt,
linux
und 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/bash
und 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
Jetzt können Sie umbenennen
/etc
(möchten Sie vielleichtls
zuerst)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 :
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
/etc
in diesem Szenario nicht über die Konfigurationsdateien festgelegt werden kann , legt Bash automatisch einen fest .3 Wenn
exec systemd
es bei Ihnen nicht funktioniert,exec /sbin/init
sollten Sie den Trick machen. Wenn nicht,readlink -e /sbin/init
sollte der Pfad zu dem Init-Programm angegeben werden, das ausgeführt werden soll, das Sie dannexec
mit seinem vollständigen Pfad verwenden können. Wenn Sie so nicht vorgehen können, geben Sie einfach einreboot
.quelle
F10
nur wenigen Zeilen erscheint und stoppt bei leerem Bildschirm. Kannst du etwas vorschlagen?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
/etc
von 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/directory
und hängen Sie das Laufwerk mit einsudo mount /dev/sd# /mnt/directory
. Navigieren Sie zu dem Verzeichnis mitcd /mnt/directory
und Sie sollten sich jetzt im Stammverzeichnis Ihrer Installation befinden, aber jetzt mit einem funktionierendensudo
Befehl. Führen Siesudo mv apache2 etc
Ihr 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
/apache2
Ordner, benennen Sie ihn in um und starten Sie ihn/etc
neu.quelle
sudo nautilus
vom Terminal aus. (Ubuntu verwendet "nautilus" als Dateimanager, genauso wie Windows "explorer" verwendet.)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.Stellen Sie den bootfähigen USB wie hier gezeigt her.
Booten Sie von USB, indem Sie wie hier gezeigt die Taste drücken .
Finden Sie Ihre Dateisystempartition heraus, indem Sie ausführen
gparted
. Angenommen, es ist SDXY.Auf dem Terminal ausführen
sudo mount /dev/sdxy /mnt
Auf dem Terminal ausführen
sudo mv /mnt/apache2 /mnt/etc
Überprüfen Sie Ihr Dateisystem in / mnt auf die Namensänderung.
Auf dem Terminal ausführen
sudo reboot
Wenn Sie dazu aufgefordert werden, entfernen Sie den USB-Stick und drücken Sie die Eingabetaste
quelle
mount
Programm ist sehr streng und muss immer als root ausgeführt werden; Die einzige Ausnahme ist, wenn sich das Dateisystem in befindetfstab
und über dieuser
Option verfügt. Das Programmudisksctl
ermöglicht normalen Benutzern, Geräte beispielsweise mithilfe von bereitzustellenudisksctl mount -b /dev/sda1
(es erstellt einen geeigneten Bereitstellungspunkt in/media/$USER/
). Ich habe nicht versucht,udisksctl
von einem Live-System aus zu verwenden, aber auf einem Live-System ist man immer ein privilegierter Benutzer, der in der Lage ist,sudo
ohne Kennwort zu arbeiten, sodass keine Dienstprogramme erforderlichudisksctl
sind, die ansonsten so nützlich sind