Antworten:
Kurz gesagt: nein.
Sie müssen von einem Backup wiederherstellen. (Einige Sicherungstools verfügen möglicherweise über Optionen, mit denen nur Berechtigungen wiederhergestellt werden können, andere können gesicherte Dateien mit ihren Berechtigungen auflisten und Sie können diese verwenden, um Ihr System zu reparieren.)
Wenn Sie kein Backup haben, müssen Sie dies alles manuell beheben.
sudo chown -R user:user /
ist das System wahrscheinlich so stark ausgelastet, dass Sie es nicht aus einem Backup wiederherstellen können .
chown
beschriebenen Schritte ausgeführt haben , ist es wahrscheinlich, dass Sie keine weiteren Schritte ausführen können, bevor Sie das gesamte System von Grund auf neu installiert haben. Das System hat noch nicht einmal einen root
Account und sudo
funktioniert auch nicht. Es lohnt sich wahrscheinlich, zu versuchen, von einer Einzelbenutzershell zu booten, aber Sie können nicht erwarten, dass dies funktioniert.
sudo
oder sogar su
, wenn alle relevanten Dateien im Besitz von sind, weiterhin funktionieren wird, user
ist eine andere Sache (wahrscheinlich nicht, weil unter anderem das SUID-Bit auf der Exe weg sein wird).
Nur wenn Sie den Benutzer- und Gruppenbesitz jeder Datei und jedes Verzeichnisses in Ihrem /
Verzeichnis kennen.
Selbst dann haben Sie bereits das Eigentum an kritischen Systemdateien blockiert, deren Eigentümer root sein muss, einschließlich des sudo
Befehls. Möglicherweise müssen Sie die Festplatte auf einem anderen System einbinden - und beachten Sie, dass das andere System möglicherweise nicht die gleichen UID- und GID-Zuordnungen aufweist wie das, das Sie gerade überlastet haben.
Erstellen Sie nach Möglichkeit eine Kopie der gesamten Festplatte und installieren Sie dann Ihr Betriebssystem neu. Sobald Sie dies getan haben, können Sie versuchen, Dateien auf das neu gelöschte System zurück zu kopieren und deren Eigentümer wiederherzustellen. Sie können wahrscheinlich davon ausgehen (wenn auch nicht zu 100% zuverlässig), dass alles unter dem /home/foo
Benutzer foo
gehört und dass jede Mail-Spooldatei /var/mail
dem entsprechenden Benutzer gehört (wenn Sie E-Mail auf dem System haben). Sie können wahrscheinlich davonkommen, ohne die meisten Dateien wiederherzustellen, die nicht darunter liegen /home
, je nachdem, was Sie mit dem System gemacht haben.
Und dann pflegen Sie die Angewohnheit, jeden Befehl, unter dem Sie laufen, noch einmal zu überprüfen, sudo
bevor Sie ihn treffen Enter.
Wenn Ihre Distribution RPM-basiert ist, können Sie NUR Dateien wiederherstellen, die von RPM-Paketen installiert wurden.
So stellen Sie alle Paketberechtigungen wieder her:
rpm --setperms -a
So stellen Sie alle Paketbesitzer (Benutzer / Gruppe) wieder her:
rpm --setugids -a
Wenn -a nicht ausgeführt wird, können Sie eine Bash-Schleife ausführen:
Für Berechtigungen:
for x in $(rpm -qa); do rpm --setperms $x; done
Für den Besitzer:
for x in $(rpm -qa); do rpm --setugids $x; done
Auszug aus: http://www.sysadmit.com/2016/10/linux-restaurar-permisos-de-un-paquete.html
Sie können die aktuellen Versionen speichern und diese dann mit der Option -v auswerten, um sie wiederherzustellen.
chown -R nobody:nobody -v /tmp/some_file > /tmp/chown.log
cat /tmp/chown.log
Der Inhalt wäre:
changed ownership of `/tmp/some_file' from me:users to nobody:nobody
Mit Ihrer bevorzugten Skriptsprache und regulären Ausdrücken können Sie den schmerzhaften Vorgang des Zurücksetzens ausführen (falls erforderlich).
Ich würde dringend empfehlen , auf / kein rekursives Chowning durchzuführen, da Sie / etc / shadow oder eine andere wichtige Datei verfügbar machen.
sudo chown -R user:user ..
kann dieselbe Wirkung haben wie der hier erwähnte, wenn Sie sich eine Ebene unterhalb des Stammverzeichnisses des Dateisystems befinden. Versuchen Sie nicht so etwas.