Korrigieren Sie die Berechtigungen des Servers nach versehentlichem chmod

Korrigieren Sie die Berechtigungen des Servers nach versehentlichem chmod

Beim Versuch, einen Mailserver zu debuggen, habe ich Folgendes eingegeben:

chmod -R 777 /

anstatt:

chmod -R 777 .

und das Sahnehäubchen: Da ich vergessen hatte, dass ich ein Skript geändert hatte, das ich zum Anmelden verwende, um etwas zu reparieren, habe ich das alles als Root gemacht. Ich habe keine Backups von den meisten Teilen des Systems (schlechte Wahl, ich weiß).

Anders als bei den Fragen „Wiederherstellen von chmod -R -777 /“ und „Was ist nach ‚chmod -R 777 /‘ zu tun?“ bin ich immer noch als Root angemeldet und es wurde nicht das ganze System geändert, sodass ich eine gewisse Kontrolle über das System habe. Ich habe den Befehl auch innerhalb einer Sekunde mit ^C beendet, um den Schaden zu minimieren. Seitdem habe ich den Server physisch vom Internet getrennt.

Ich glaube, ein Skript könnte das Problem beheben, indem es die Berechtigungen des Dateisystems auf Grundlage der Daten des Paketmanagers wiederherstellt, aber ich weiß nicht, wie ich das anstellen soll. Wenn das nicht möglich ist, wie kann ich die Daten vom Server speichern, um das Betriebssystem neu zu installieren?

Ich bin mir des potenziellen Risikos bewusst, das durch das Fehlen einer Datei entsteht, würde aber trotz dieser Risiken eine Wiederherstellung einer Neuinstallation vorziehen.

Dies ist die aktuelle Ausgabe von ls -la /:

drwxrwxrwx  22 root root  4096 Sep  7  2016 .
drwxrwxrwx  22 root root  4096 Sep  7  2016 ..
drwxr-xr-x   2 root root  4096 May 18 07:55 bin
drwxr-xr-x   3 root root  4096 Sep 21 07:53 boot
drwxr-xr-x  19 root root  3180 Sep 11 20:54 dev
drwxrwxrwx  92 root root  4096 Aug 23 07:50 etc
drwxr-xr-x   4 root root  4096 May 23  2016 home
lrwxrwxrwx   1 root root    31 Feb 24  2016 initrd.img -> /boot/initrd.img-3.16.0-4-amd64
drwxrwxrwx  18 root root  4096 Feb 24  2016 lib
drwxr-xr-x   2 root root  4096 Jun 20 07:00 lib64
drwx------   2 root root 16384 May 19  2016 lost+found
drwxrwxrwx   2 root root  4096 May  5  2015 media
drwxr-xr-x   2 root root  4096 May  5  2015 mnt
drwxr-xr-x   3 root root  4096 May 28  2016 opt
dr-xr-xr-x 148 root root     0 Sep  3 21:55 proc
drwxrwxrwx  10 root root  4096 Aug 19 17:58 root
drwxr-xr-x  22 root root   800 Sep 21 17:09 run
drwxrwxrwx   3 root root  4096 Jun 20 07:00 sbin
drwxr-xr-x   4 root root  4096 Sep 20 23:18 sftp
dr-xr-xr-x  13 root root     0 Sep  3 21:55 sys
drwxrwxrwx   8 root root  4096 Sep 21 17:17 tmp
drwxrwxrwx  11 root root  4096 Feb 24  2016 usr
drwxr-xr-x  14 root root  4096 Jun 25 06:21 var
lrwxrwxrwx   1 root root    27 Feb 24  2016 vmlinuz -> boot/vmlinuz-3.16.0-4-amd64

habe gerade in meiner Panik bemerkt, dass ich auf Ubuntu-Forum und nicht auf Debian geklickt habe ... ich weiß, dass man einen Mailserver nicht so repariert. Es war eine schlampige Hack-Lösung, um zu sehen, was kaputt ging

ich habe das jetzt im richtigen Forum repostet

Antwort1

Beheben eines Berechtigungsfehlers

Wie kann ich die Standardberechtigung für das Stammverzeichnis wiederherstellen?

Regel Nr. 1: Wenn Sie mit Befehlszeilen nicht vertraut sind, führen Sie keine Befehle als Root aus.

Ausführung chmod -R 777 /als Rootwird Ihr System zerstören.

Ausführung rm -rf /als Rootwird in einer Katastrophe enden!.

Wenn Sie die Ausführung als Root durchgeführt haben chmod -R 777 /, führen Sie die folgenden Schritte aus, um die Ausführung wiederherzustellen:

Schritt 1:

Kopieren Sie das folgende Skript und fügen Sie es in Ihre Konsole ein, um das Fixpermission-Skript zu generieren

echo '
chmod -R 755 /bin /boot /dev /etc/ /home /lib /lib64 \
/media /mnt /opt /run /sbin /srv /usr /var

chmod -R 777 /initrd.img /vmlinuz
chmod -R 1777 /tmp
chmod -R 555 /sys
chmod -R 555 /proc
chmod -R 700 /root

' > fixpermission

chmod +x fixpermission

./fixpermission

Das Obige erstellt ein Skript mit dem Namen „fixpermission“ und führt es aus, ./fixpermissionwenn es nicht bereits aufgerufen wurde.

Schritt 2:

Führen Sie es aus stat -c '%A %a %n' /*, um Ihr richtiges Verzeichnis und die wiederhergestellte Berechtigung anzuzeigen.

Beispiel: Ihre Verzeichnisberechtigungsstruktur sollte ungefähr wie folgt aussehen:

root@plab:~# stat -c '%A %a %n' /*
drwxr-xr-x 755 /bin
drwxr-xr-x 755 /boot
drwxr-xr-x 755 /dev
drwxr-xr-x 755 /etc
drwxr-xr-x 755 /home
lrwxrwxrwx 777 /initrd.img
lrwxrwxrwx 777 /initrd.img.old
drwxr-xr-x 755 /lib
drwxr-xr-x 755 /lib64
drwx------ 700 /lost+found
drwxr-xr-x 755 /media
drwxr-xr-x 755 /mnt
drwxr-xr-x 755 /opt
dr-xr-xr-x 555 /proc
drwx------ 700 /root
drwxr-xr-x 755 /run
drwxr-xr-x 755 /sbin
drwxr-xr-x 755 /srv
dr-xr-xr-x 555 /sys
drwxrwxrwt 1777 /tmp
drwxr-xr-x 755 /usr
drwxr-xr-x 755 /var
lrwxrwxrwx 777 /vmlinuz
lrwxrwxrwx 777 /vmlinuz.old

Schritt 3:

Starten Sie Ihr System neu!

Hoffe das hilft.

verwandte Informationen