Ich bin aus Versehen gerannt
sudo chmod 755 -R /
Anstatt von
sudo chmod 755 -R ./
Ich habe es nach ein paar Sekunden gestoppt, aber jetzt gibt es einige Probleme wie
sudo: must be setuid root
Wie kann ich Berechtigungen zurücksetzen?
permissions
sudo
chmod
fl00r
quelle
quelle
sudo
bedeutet, dass du dir zweimal überlegt hast, was du tun wirst!Upgrade from Ubuntu 11.04 to Ubuntu 11.04
. Wenn Sie diese Option akzeptieren, wird Ubuntu auf die schmerzloseste Weise für Sie neu installiert./
am Ende des Verzeichnisnamens schreiben , um das Verzeichnis als Ziel anzugeben. Es ist eine schlechte Angewohnheit , tu es nicht, niemals ! Der.
an sich gültige Verzeichnisname muss nicht angehängt werden/
. Wenn alle diese Regel befolgensudo
würden, hätten sehr viele falsch geschriebene Operationen keine Auswirkungen auf das Stammverzeichnis, sodass ihren Systemen kein Schaden zugefügt worden wäre. Tu es nicht!cd .
tut zum Beispiel nichts.ls .
ist das gleiche wiels
. Außerdem ist das..
ein Verzeichnisname, der "das übergeordnete Element von.
" bedeutet, und Sie wussten es wahrscheinlich bereits./
am Ende nicht verwendet wird . Wenn Sie die Pfadnamenerweiterung nur für Verzeichnisse ausführen möchten. Beispiel für die Auflistung von Verzeichnissen im aktuellen Verzeichnis:echo */
Antworten:
Kurz gesagt: Sie können Ihr System nicht neu installieren.
Ich meine, Posix-Berechtigungen werden in hohem Maße verwendet und genutzt. Es gibt eine Vielzahl von Stellen im Dateisystem, an denen falsche Berechtigungen das Betriebssystem beschädigen (SUID-Flags) oder, noch schlimmer, es in Bezug auf die Sicherheit offen legen (
/etc/ssh/ssh_host_rsa_key
), während es anscheinend einwandfrei funktioniert.Daher ist eine solche Wiederherstellung nur schwer richtig durchzuführen. Verpassen Sie eine Sache - und Sie vermasseln es. Sie haben Ihren Befehl bereits verkorkst
sudo chmod
(wenn das eher Ihre Freundin als Sie ist, könnte sie auch eine Linux-Lektion lernen) - und das ist ein sehr einfacher Befehl. Eine ordnungsgemäße Wiederherstellung würde viel mehr Befehle und viel mehr Wachsamkeit erfordern. Auch wenn Sie jemandes Skript verwenden.Also vertrau mir, einfach neu installieren. Es ist eine sichere Wette und garantiert, dass Sie keine Probleme haben.
Abschließend noch einige hier relevante Tipps.
Erstens: Neuinstallationen sind weniger schmerzhaft, wenn Sie sie das
/home
nächste Mal auf einer separaten Partition einrichten. Eigentlich werden sie ein Kinderspiel sein.Zweitens: Denken Sie darüber nach, verrückte Linux-Wissenschaft in einer virtuellen Maschine wie der VirtualBox zu betreiben und machen Sie Ihre Snapshots.
Drittens:
chmod -R .
funktioniert. Ein Punkt für sich.
ist ein gültiger Verzeichnisname. Dieser Schrägstrich muss nicht wirklich angehängt werden. Sie hätten das katastrophale Risiko vermeiden können, den Punkt komplett zu überspringen.bloß
chmod: missing operand after ‘755’
VS ein ruiniertes System.quelle
sudo
bedeutet, dass Sie zweimal überprüfen müssen.Ich habe einige Ruby-Skripte geschrieben und benutze sie seit einigen Jahren, um
rsync
Berechtigungen und Eigentumsrechte zu erhalten. Das Skriptget-filesystem-acl
sammelt alle Informationen, indem es alle Dateien rekursiv durchläuft und in die Datei einfügt.acl
. Das Skript.acl-restore
liest.acl
und wendet allechown
und anchmod
.Sie können
get-filesystem-acl
eine ähnliche Ubuntu-Installation ausführen und dann die.acl
Datei auf Ihre mit chmod beschädigte Box kopieren, sie einfügen.acl
und.acl-restore
/ eingeben und ausführen.acl-restore
.Du musst root haben, also repariere es
sudo
wie von Marco Ceppi vorgeschlagen.Ich kann dir die
.acl
Datei für mein Ubuntu generieren und geben .get-filesystem-acl
.acl-restore
quelle
owner_id
definiertfind SOME_DIR -depth -printf 'chmod %m %p\n' > saved_permission
Auf lange Sicht: Sie können. Sie müssen das Dateisystem von einer Live-CD mounten und die Berechtigungen an den entsprechenden Stellen zurücksetzen. Zumindest, um sudo wiederzuerlangen, sollten Sie
sudo chmod u+s /usr/bin/sudo
in der LiveCD-Sitzung ausgeführt werden. Dies behebt den Fehler, der als root festgelegt werden muss.Es wäre jedoch wahrscheinlich einfacher, das System einfach neu zu installieren.
quelle
Ich würde versuchen, alle Pakete mit neu zu installieren
apt-get install --reinstall
, möglicherweise mithilfe der Ausgabe vondpkg --get-selections | grep install
, um eine Liste von ihnen zu erhalten.quelle
sudo apt-get autoremove
?autoremove
nur Pakete, die Sie nicht manuell installiert haben.apt-mark auto $pkg
/ mitapt-mark manual $pkg
denen Sie den Status von "manuell installiert / automatisch installiert" pro Paket ändern können.Okay, ich habe das nicht getestet (also benutze es auf dein eigenes Risiko), aber es könnte trotzdem funktionieren. Ich werde dies in einer virtuellen Maschine testen, wenn ich die Möglichkeit habe:
Zunächst habe ich in einem noch funktionierenden System Folgendes getan, um alle Dateiberechtigungen in einer Liste abzurufen, wobei das
/home/
Verzeichnis übersprungen wurde :Dadurch werden die Berechtigungen und der Dateiname für jede Datei oder jedes Verzeichnis auf dem System gedruckt, gefolgt von einem
\0
Zeichen (dies wird später benötigt, um seltsame Dateinamen wie z. B. solche mit Zeilenumbrüchen zu behandeln).Dann auf einem System, auf dem die Dateiberechtigungen gefährdet wurden:
Dies liest jede Zeile von
fileper.log
, speichert die Berechtigungen als$perm
und den Dateinamen als$file
und setzt dann die Berechtigungen der Datei (oder des Verzeichnisses) auf die in der aufgelisteten Wertefileper.log
Ein paar Dinge, die Sie hier beachten sollten:
/tmp/fileper.log
werden möglicherweise benutzerdefinierte Einstellungen, die Verarbeitung usw. aufgelistet.Ich würde vorschlagen, eine LiveCD mit der Linux-Version zu starten, die Sie auf Ihrer Festplatte haben, den Befehl auszuführen, den Pfad dahin zu ändern, wo Sie die lokale Festplatte gemountet haben, und den zweiten Befehl auszuführen!
Ich habe getestet, dass ich beim Booten von einer Ubuntu-CD / USB entscheiden kann, die Festplatte nicht zu formatieren, was bedeutet, dass alles im
/
Verzeichnis ersetzt wird, ABER das/home/
Verzeichnis überspringen . Das heißt, Ihre Benutzer haben die Konfiguration von Apps / DATA (Musik, Video, Dokumente) noch intakt. Und durch Ersetzen der Systemdateien wird diechmod
richtige Anzahl eingestellt.quelle
chmod $(echo $LINE)
statt nurchmod $LINE
? Außerdem können Sie verwenden , nurfind
ohnestat
:find … -printf "%#m %p\n"
. Besser noch, Sie können den gesamten Befehl erstellen:find … -printf "chmod %#m %p\n"
und dann die Datei als Skript ausführen.michael@NEXUS-TWO:~$ sudo find / -name '*' -exec stat -c "%a %n" {} \; >> /tmp/fileper.log
aber auch so sein, dass sie überläuft/proc
und an einigen anderen Stellen, die Sie möglicherweise nicht in Ihrer Liste haben möchten.(Ich weiß, ich sollte in einer Antwort keinen Kommentar abgeben, aber nicht genug Ruf, um einen Kommentar abzugeben.)
Die Antwort von blade19899 hat mit Ausnahme von Symlinks für mich funktioniert. ZB 755 auf / bin / bash angewendet, aber dann 777 auf symlink / bin / rbash angewendet, effektiv 777-ing / bin / bash.
Da ich bereits die Datei fileper.log hatte, habe ich den Befehl destination-end geändert:
quelle
chmod
.... effectively 777-ing /bin/bash
- nein; so geht es nicht. Wollen Sie damit sagen, dass ich als Nicht-Root-Benutzer durch/usr/bin/apt
mein eigenes Ding ersetzen kann, indem ich einfach über einen 777-Symlink darauf schreibe? :) Übe kritisches Denken; Symlinks können und funktionieren nicht so. 777 Berechtigungen für Symlinks sind allgemein und normal.Sie können versuchen, Berechtigungen mit wiederherzustellen
apt-get
.Wenn Sie diese Befehle nicht mit sudo ausführen können, müssen Sie möglicherweise in den Wiederherstellungsmodus booten und sie als root ausführen.
Informationen zum Booten in den Wiederherstellungsmodus finden Sie unter https://wiki.ubuntu.com/RecoveryMode .
Von http://hyperlogos.org/page/Restoring-Permissions-Debian-System
Hinweis: Dies wurde ursprünglich in den Ubuntu-Foren gepostet, aber ich kann den ursprünglichen Beitrag nicht finden.
Versuchen Sie, in der Reihenfolge,
Wenn das fehlschlägt:
Und schließlich als letztes Mittel,
Mit apt-get
Hier ist der relevante Ausschnitt, BEARBEITET FÜR RICHTIGKEIT und neu formatiert:
quelle