Wie kann ich einen chmod im Verzeichnis etc zurücksetzen?

9

Ich habe versehentlich den folgenden Befehl im Verzeichnis etc ausgeführt:

sudo chmod -R 700 /etc

Ich weiß, dass ich etwas sehr falsch gemacht habe. Mein Terminal druckt jetzt:

I have no name!@ubuntu: /$

Wie kann ich mein etc-Verzeichnis auf den früheren Zustand zurücksetzen?

Ich habe versucht, die Berechtigungen zu ändern, aber es schlägt jetzt fehl. Es wäre auch sehr hilfreich, wenn jemand erklären könnte, was tatsächlich schief gelaufen ist, als ich diesen Befehl ausgeführt habe usw. Es waren nur Dateiberechtigungen. Warum scheint dann das ganze System völlig in die Luft gesprengt zu sein? Warum funktionieren derzeit keine Anmeldekennwörter? Ich weiß, dass es im Verzeichnis etc eine Datei gibt, die mit Benutzern zu tun hat. Aber wie hat das Ändern von Berechtigungen alles gefährdet? Einige technische Details hierzu wären sehr hilfreich.

Rafay
quelle
3
Sie benötigen eine Verzeichnisliste ( ls -laR) von einem anderen laufenden System. Welche Version gehört dir? Sie können Verzeichnisse in 755 und Dateien in 644 ändern, einige müssen jedoch unterschiedliche Modi haben (z. B. / etc / shadow).
ott--
4
Wenn Sie tippen sudo, sollten Sie es in Ihrem Kopf zurücklesen: "Ich gebe mir die ultimative Macht über mein System ohne Sicherheitsnetz. Bin ich sicher, dass ich weiß, was ich tue? Bin ich sicher, dass ich getippt habe, was ich meinte?" bevor Sie die Eingabetaste drücken.
Msw
1
Mit einem funktionierenden System können Sie Verzeichnisse und Dateien mit nicht standardmäßigen Modi verwenden find /etc -type d ! -perm 755 -exec ls -ld {} \;und find etc -type f ! -perm -644 -exec ls -l {} \;suchen. In Debian sind es nur 2 Verzeichnisse und 39 Dateien
ott--
"Aber wie hat das Ändern von Berechtigungen alles gefährdet?" - Einige Dinge, die zum Lesen dieser Dateien benötigt wurden, haben jetzt keine Berechtigung zum Lesen dieser Dateien.
user253751

Antworten:

15

Eines ging schief: die Verwendung sudomit diesem Befehl. Der -RSchalter weist Sie chmodan, die Berechtigungen für dieses Verzeichnis rekursiv festzulegen. Dies ist in jedem Fall eine nicht empfohlene Aktion (sollten wir sie als Häresie bezeichnen), wenn Sie nicht wissen, was Sie tun (sobald mir dies passiert ist, ich Ich habe den Befehl nicht ausgegeben, aber eine fehlerhafte Benutzeroberfläche hat ihn erstellt, und mein System wurde verkabelt.

Es waren nur Dateiberechtigungen. Warum scheint dann das ganze System völlig in die Luft gesprengt zu sein?

GNU / Linux reagiert sehr empfindlich auf Dateiberechtigungen, da es mit Blick auf Stabilität und Sicherheit erstellt wurde. Gleiches gilt für die meisten Programme, die unter GNU / Linux ausgeführt werden (dh apache2Root-Berechtigungen und Verwendungen www-dataoder ähnliche Benutzer werden gelöscht, und Ihre 700Berechtigung erlaubt es nicht, eigene Dateien zu lesen / schreiben).

Warum funktionieren derzeit keine Anmeldekennwörter?

Wie Sie bereits erwähnt haben, werden Anmeldekennwörter in einer Datei gespeichert /etc/passwdund nur root (ich nehme an, Sie haben das nicht geändert) kann sie lesen, aber die Anmeldeaufforderung (oder die GUI-Anmeldung) verwendet ein Konto ohne Berechtigungen, daher kann sie nicht gelesen werden die Datei.

Aber wie hat das Ändern von Berechtigungen alles gefährdet?

Wie oben erwähnt, reagiert Linux sehr empfindlich auf Dateiberechtigungen. Einige Programme überprüfen sogar die Berechtigungen ihrer Konfigurationsdateien, und wenn sie nicht erwartet werden, werden sie überhaupt nicht ausgeführt.

Wie kann ich mein etc-Verzeichnis auf den früheren Zustand zurücksetzen?

Wenn Sie eine RPM-basierte Distribution verwenden, kann dies mit dem rpm --setpermsBefehl erfolgen. Es würde schmerzhaft sein, eines nach dem anderen die Pakete zurückzusetzen, auf einem Debian-ähnlichen System apt-get --reinstall installist Ihr Freund. Andere Lösungen sind möglicherweise verfügbar, benötigen jedoch ein funktionierendes System.

Braiam
quelle
5

Mal sehen, was Sie getan haben, ist, Berechtigungen im gesamten Verzeichnis / etc als Lese- / Schreib- / Ausführungsrechte festzulegen, die nur für den Eigentümer der Datei / dir zulässig sind und für alle anderen verweigert werden. Wenn Sie durch die Dateiberechtigungen verwirrt sind, lesen Sie mehr unter Wikipedia: Traditionelle UNIX-Berechtigungen .

Der Grund, warum Sie Ihr System in die Luft gesprengt haben, ist, dass viele Prozesse ihre Einstellungen nicht mehr lesen können und nicht auf / etc zugreifen können. Es wird nicht einfach sein, das gesamte Verzeichnis / etc auf den vorherigen Zustand zurückzusetzen. Wie das geht, hängt von Ihrer Distribution ab, aber im Grunde bedeutet es, jedes Paket neu zu installieren, das eine Datei in / etc. Enthält.

Als schnelle Hilfe, um das System verwenden zu können, um es ordnungsgemäß zu reparieren (Neuinstallation aller Pakete mit Inhalten in / etc, wie oben angegeben), können Sie Folgendes tun:

    # sudo find /etc -type d -exec chmod 775 '{}' \;
    # sudo find /etc -type f -exec chmod 664 '{}' \;

Mit diesen beiden Zeilen legen Sie liberale Berechtigungen im gesamten Verzeichnis / etc fest, wobei Lesen / Schreiben für den Eigentümer und die Gruppe und Lesen für alle anderen zulässig sind. Der Grund für die beiden chmod ist, das Ausführungsbit nur für dirs zu setzen. Einige Prozesse werden sich beschweren oder trotzdem fehlschlagen, einschließlich aller ausführbaren Dateien in / etc, aber Sie sollten in der Lage sein, die oben beschriebene Neuinstallation durchzuführen.

Bitte beachten Sie, dass sich Ihr System zumindest in einem unsicheren Zustand befindet, bis Sie die ursprünglichen Berechtigungen wiederhergestellt haben.

Javier Marcet
quelle
2
Außerdem funktionieren einige Programme nicht. SSH erfordert beispielsweise restriktive Berechtigungen für bestimmte Dateien. /etc/sudoersist ein anderer.
Mel Boyce
1
Aber einige Dateien in /etcdürfen niemals weltlesbar gemacht werden! Wiederherstellen von Backups, deshalb haben Sie sie (oder deshalb haben Sie die Leute aufgefordert, Backups zu erstellen).
Tripleee
0

700 hat den Zugriff auf viele Dateien für Gruppen und Weltbenutzer entfernt (z. B. haben Dateien jetzt rwx------Berechtigungen). Beispielsweise müssen alle Benutzer lesen können /etc/passwd. Mit Ihrem Setup kann jetzt nur noch root lesen /etc/passwd. Viele Dinge werden kaputt gehen, wenn Sie die Berechtigungen für Dateien /etc/auf unvorhersehbare Weise brechen .

Sie könnten versuchen, die Berechtigungen basierend auf einem funktionierenden Server neu zu erstellen (vorausgesetzt, Sie können immer noch zu root wechseln), aber das ist fehleranfällig.

Ich schlage vor, /etc/aus einer Sicherung wiederherzustellen, wenn Sie eine haben (stellen Sie sicher, dass die Wiederherstellung die Berechtigungen zurücksetzt, oder stellen Sie, wenn Ihre Sicherungslösung dies unterstützt, nur die Berechtigungen wieder her).

EightBitTony
quelle