Ich habe versucht zu rennen, chmod -R 777 ./
aber am Ende habe ich meine gesamte Maschine getippt chmod -R 777 /
und eingestellt 777
. Was kann schon schief gehen? Wie kann ich es reparieren?
Ich habe versucht zu rennen, chmod -R 777 ./
aber am Ende habe ich meine gesamte Maschine getippt chmod -R 777 /
und eingestellt 777
. Was kann schon schief gehen? Wie kann ich es reparieren?
Antworten:
Probleme? Ja, viele. Kann es repariert werden? Sicher. Schneller als eine Neuinstallation? Wahrscheinlich nicht.
Meine Empfehlung ist eine Neuinstallation. Erstellen Sie eine Sicherungskopie des vorhandenen Systems und stellen Sie die Paketliste und den Inhalt der Dateien in /etc
und wieder her /var
. Für /usr/local
, können Sie wahrscheinlich Berechtigungen manuell wiederherstellen. Für /home
und /srv
müssen Sie die Berechtigungen aus Backups wiederherstellen.
Wenn dies ein System mit mehreren lokalen Benutzern ist, beachten Sie, dass einige Dateien, die für die Welt lesbar sind, einige Dinge enthüllt haben, die vertraulich hätten bleiben müssen.
Wenn Sie wirklich versuchen möchten, das Problem zu beheben (eher eine Lernübung als eine praktische Wiederherstellungsroute), stellen Sie zunächst die Berechtigungen einiger Dateien wieder her. Beachten Sie, dass die meisten Dateien jetzt zu offen sind, einige jedoch nicht die erforderlichen Setuid- Bits enthalten. Hier sind Schritte, die Sie vor allem anderen unternehmen sollten. Beachten Sie, dass dies keine vollständige Liste ist, sondern nur ein Versuch, das System funktionsunfähig zu machen.
chmod -R go-w /
chmod 440 /etc/sudoers
chmod 640 /etc/shadow /etc/gshadow
chmod 600 /etc/ssh/*_key /etc/ssh*key # whichever matches
chmod 710 /etc/ssl/private /etc/cups/ssl
chmod 1777 /tmp /var/tmp /var/lock
chmod 4755 /bin/su /usr/bin/passwd /usr/bin/sudo /usr/bin/sudoedit
chmod 2755 /var/mail /var/spool/mail
Dann müssen Sie alle Berechtigungen überall wiederherstellen. Für Dateien unter /usr
können Sie die Pakete abhängig von Ihrer Distribution mit einem der folgenden Befehle neu installieren:
apt-get --reinstall install
pacman -S $(pacman -Qq --dbpath /newarch/var/lib/pacman) --root /newarch --dbpath /newarch/var/lib/pacman
, vorausgesetzt, Sie befinden sich auf einer Live-CD und Ihre Arch-Installation ist unter gemountet /newarch
.Bei Dateien unter /etc
und /var
wird dies nicht funktionieren, und es bleiben so viele davon wie sie sind: Sie müssen die Berechtigungen für eine funktionierende Installation replizieren. Für Dateien unter /srv
und /home
müssen Sie sowieso von Backups wiederherstellen. Wie Sie sehen können, können Sie auch eine Neuinstallation durchführen.
Sie werden es vielleicht zuerst nicht bemerken, aber viele Dinge können und werden schief gehen. Das Hauptproblem ist, dass das gesamte Sicherheitsmodell für das gesamte System fehlerhaft ist. Es ist, als hätte man einen Körper ohne Haut, Organe in der Luft. Es muss infiziert werden, weil es nicht so funktionieren soll. Auch wenn es für ein paar Minuten zu funktionieren scheint, müssen Sie dies bereinigen.
Der beste Weg wäre, von vorne zu beginnen. Auf diese Weise reduzieren Sie Ihr Risiko erheblich und erzielen in kürzerer Zeit ein saubereres Ergebnis. Wenn Sie über ordnungsgemäße Sicherungen verfügen, sollte dies keine allzu große Erfahrung sein.
Wenn Sie versuchen, es zu bereinigen, sollten Sie in erster Linie den Paket-Manager Ihrer Distribution anweisen, ALLES auf dem System neu zu installieren, einschließlich des Überschreibens von Konfigurationsdateien. Verwenden Sie dann ein beliebiges Überprüfungssystem, um die Dateien zu überprüfen und sicherzustellen, dass keine von ihnen als Dateien mit ungewöhnlichen Berechtigungen gekennzeichnet ist. Arbeiten Sie sich als Nächstes durch Benutzer-Home-Verzeichnisse und setzen Sie alles en masse auf vernünftige Berechtigungen zurück. Gehen Sie dann die wenigen Dinge durch, die über besondere Berechtigungen verfügen sollten (wie z. B. SSH-Schlüsseldateien). Führen Sie zum Schluss eine vollständige Systemsuche für alle mit 777 gekennzeichneten Elemente durch, und gehen Sie die Liste durch (sie sollte klein sein, wenn Sie die anderen Schritte gründlich ausgeführt haben) und arbeiten Sie sie nacheinander ab, um sicherzustellen, dass sie so sind, wie sie sind.
LÖSUNG: Ich habe dies in CENTOS getestet
Dieser Typ hat meinen Job gerettet! (Sie müssen irgendwie zugreifen)
http://www.adminlinux.org/2009/07/how-to-restore-default-system.html
1) So setzen Sie UIDs und GIDs für Dateien und Verzeichnisse zurück:
for u in $(rpm -qa); do rpm --setugids $u; done
2) Zu Berechtigungen für Dateien und Verzeichnisse
for p in $(rpm -qa); do rpm --setperms $p; done
Ändern Sie dann die Berechtigungen für diese Dateien manuell:
# ll /etc/ssh/
# chmod 600 /etc/ssh/ssh_host_rsa_key
# chmod 600 /etc/ssh/ssh_host_dsa_key
# service sshd restart
Einige sicherheitsbewusste Programme werden nicht gestartet, wenn bestimmte Dateien zu viele Berechtigungen haben. Wie @ceving sagte, sshd
ist das typischste davon.
Die Hauptsache, die schief gehen kann, ist jetzt, dass jeder Benutzer jede Datei auf Ihrem System öffnen, lesen und schreiben kann . Die beiden Gründe, warum dies so schlimm ist, sind: A) Wenn ein böswilliger Benutzer durch einen Exploit oder eine Fehlkonfiguration die Kontrolle über Ihr System erlangt, kann er / sie jetzt alles auf Ihrem System ändern, und B) Sie können alles löschen, was Sie möchten, auch wenn Sie sind kein Root-Benutzer, haben also die meisten Schutzmaßnahmen, die erforderlich sind, um nicht als Root ausgeführt zu werden, aufgehoben.
Wenn Sie die Berechtigungen zuvor nicht gesichert haben, befinden Sie sich in einer schwierigen Situation. Möglicherweise können Sie ein Skript erstellen, das eine Liste von Berechtigungen von einem frisch installierten System "abruft" und diese dann auf alles auf Ihrem System "anwendet". Ein solches Skript habe ich allerdings nicht zur Hand.
rm -rf /
als normaler Benutzer arbeiten, kommt Ihr System zum Stillstand.