Siehe auch:
Warum ist "chmod -R 777 /" destruktiv?
Ich habe die Dateiberechtigungen im Stammverzeichnis /
durch Ausführen rekursiv geändert sudo chmod -R / 777
, und danach bootet mein System nicht mehr (es werden viele Fehler "Berechtigung verweigert" angezeigt).
Bitte helfen Sie.
permissions
ubuntu-10.04
boot
Marcin
quelle
quelle
Antworten:
Sie suchen nach einer verlorenen Sache. Speichern Sie die benötigten Daten und installieren Sie das Betriebssystem neu.
quelle
/etc
, der/var/www
Inhalt des Webservers und die Datenbanken. Holen Sie sich eine andere Festplatte, aktivieren Sie sie als primäre und installieren Sie sie. So bleibt Ihr anderes Laufwerk als Backup erhalten, bis Sie es übertragen können.Ich weiß, dass dpkg die Berechtigungen in den Datenbanken speichert und ich fand das folgende Skript google, das möglicherweise hilft.
Edit: Eigentlich habe ich mir das Skript kurz angesehen und es sieht so aus, als würde etwas Magie fehlen, die von PERMS zu MODE geht, z. B. gibt dpkg -c zum Beispiel "-rw-r - r--" aus, aber Sie möchten 0644, ich bin gerade auf der Arbeit, daher bin ich mir nicht sicher, ob ich die Zeit habe, die Konvertierung durchzuführen, aber ich kann später wiederkommen, wenn noch niemand hinzugekommen ist, um dieses Bit hinzuzufügen.
Es gibt hier ein Skript , das interessant aussieht
quelle
Es ist möglich , aus einer solchen Situation herauszukommen , ohne das System neu zu installieren. Nun, genauer gesagt, Sie können ein neues System entweder von einem USB-Stick oder in einer Virutal Box (oder so) ausführen, wenn Sie über ein Dual-Boot-System verfügen.
Ich habe wieder die gleiche Art von Problem ausgeführt (ein Fehler in einem Skript, das ich geschrieben habe) und es behoben, aber Sie müssen einen Experten um Hilfe bitten. Sei sehr vorsichtig!
Erstens war meine Situation einfacher zu lösen, da ich ein Dual-Boot-System hatte (Ubuntu und meine alte Fedora-Installation), aber das Ausführen des Systems für einen USB-Stick (oder vielleicht eine CD / DVD) sollte dasselbe tun.
MPOINT = / mount / ubuntu
Zuerst habe ich meine Dateisysteme wie folgt gemountet (vergessen Sie nicht, die Mount-Punkte zu erstellen): mount / dev / ubuntu / root $ MPOINT mount / dev / ubuntu / home $ MPOINT / home
Dann habe ich den folgenden Befehl ausgeführt (mein Problem war nur in einigen - kritischen - Verzeichnissen), um die Berechtigungen vom laufenden System auf das unordentliche zu kopieren (in meinem Fall habe ich sogar ein Ubuntu-System in Virtual Box unter Fedora installiert und habe dort die Berechtigungen):
find / etc / usr / bin -exec stat --format "chmod% a $ {MPOINT}% n" {} \; > /tmp/restoreperms.sh
Und dann habe ich das Skript restoreperms.sh ausgeführt.
Ich konnte wieder mit Ubuntu booten.
Der Inhalt von restoreperms.sh wird ungefähr so aussehen:
Ich habe es nicht getestet, aber es muss auch für Eigentümer und Eigentümergruppen funktionieren. Etwas wie:
find / etc / usr / bin -exec stat --format 'chown% U:% G $ {MPOINT}% n' {} \; > /tmp/restoreperms.sh^
Natürlich müssen Sie hier darauf achten, dass UID und GID auf beiden Systemen gleich sind, aber für die systembezogenen Benutzer und Gruppen sollte dies kein Problem sein.
Rk:
Wichtig dabei ist, dass eine Installationsdiskette mit der von Ihnen verwendeten Version synchronisiert bleibt oder zumindest mit der aktuellen Ubuntu-Version funktioniert. Jetzt habe ich diese Befehle in einem Cronjob, der jeden Tag (möglicherweise Wochen) ausgeführt wird, um diese Informationen zu speichern. Das wird die Lösung beim nächsten Mal einfacher machen, aber so wie ich es jetzt habe, wird es natürlich nie wieder vorkommen. ;-) Etwas wie das:
EDIT: zur Unterstützung von Links lautet der kombinierte Befehl:
/usr/bin/find / -exec /usr/bin/stat --format="[ ! -L {} ] && /bin/chmod %a %n" {}
quelle
Ich habe das Skript von oben geändert und es sieht so aus:
quelle
Wenn Sie mit blueben einverstanden sind, ist eine Neuinstallation möglicherweise schneller als die Analyse, welche Datei / welches Verzeichnis welche Berechtigung benötigt. Wenn eine Neuinstallation jedoch nicht möglich ist, finden Sie hier eine Idee:
find / | xargs stat -c 'chmod %a "'%n'"' > /tmp/chmod.sh
chmod.sh
mit den falschen Berechtigungen auf den Computerchmod +x /tmp/chmod.sh && /bin/bash /tmp/chmod.sh
quelle
ERRATUM für meinen Beitrag als Benutzer user100740: zur Unterstützung von Links lautet der kombinierte Befehl:
quelle
Wenn Sie immer noch starten können
/usr/sbin/synaptic
, kann dies häufig behoben werden.Sortieren Sie die Pakete nach Status (installierte Pakete oben), wählen Sie alle installierten Pakete aus, klicken Sie mit der rechten Maustaste und wählen Sie Neu installieren. Wenden Sie dann
dpkg
an, um alle Dateien für diese Pakete erneut zu extrahieren. (Sie verlieren alle lokalen Änderungen (aber keine Änderungen an der Konfigurationsdatei).)Es kann jedoch sein, dass nicht alles repariert wird.
Die andere Sache ist, wenn Sie in gehen
/var/cache
, können Siedpkg -x <package name> /
für jedes installierte Paket aufrufen, und dann anrufendpkg --reconfigure -a
. Wenn Sie Ubuntu verwenden, können Sie auch ein dist-Upgrade durchführen, das häufig viele Fehler behebt (vorausgesetzt, Sie sind noch nicht in der neuesten Version). Wenn ich versuche, einen Fehler wie diesen zu beheben, probiere ich im Allgemeinen diese einfachen Korrekturen aus. Wenn sie nicht einfach wieder funktionieren, ist es Zeit für eine Neuinstallation.quelle
Booten von einer Live-CD. dann starte shell, dann sudo -s. Dann chmod 777 / *, dann chmod 600 / etc / passwd. Kernel gerät in Panik, wenn Init fehlschlägt, was passiert, wenn / lib / init-Skripte nicht ausführbar sind. Booten Sie für Lilo Linux 1 im Einzelbenutzermodus und führen Sie das obige Skript von user102453 aus. Dadurch wird der Systemstart aufgefordert. Muss noch X zum Laufen bringen.
quelle
Das Setzen der Erlaubnis von / auf 755 hat bei mir funktioniert.
Also vorher mit prüfen
Die Berechtigungen sollten "drwxr-xr-x" (755) sein.
quelle