Hilfe - Dateirechte am Server verändert - Namensauflösung

Hallo zusammen,

durch einen dummen Fehler habe ich die Rechte von Dateien/Verzeichnissen auf dem linuxmuster.net-Server verändert. Zum Hintergrund: ich wollte in den Tauschverzeichnissen der Klassen die Besitzer mit

chmod root:root */*

setzen, dummerweise habe ich als Verzeichnis

/*/*

angegeben, so dass der Rechner pflichtgemäß die Verzeichnisbesitzer in den Unterverzeichnissen erster Ordnung und darunter verändert hat. Den Befehl habe ich nach weniger als 1 Sekunde abgebrochen, aber er hatte schon Schaden angerichtet.
Im Moment treten folgende Probleme auf:

  1. Die Namensauflösung ist kaputt: Adressen nach außen werden aufgelöst, aber die Clients findet er nicht. Also ein „ping 10.72.1.1“ wird vom Client erwidert, aber „ping r72-01“ nicht.

  2. Hängt wahrscheinlich mit 1. zusammen: „service networking restart“ liefert „stop: Unknown instance:
    networking stop/waiting“

  3. Bei dem Befehl „linbo-ssh“ auf einen Client verlangt er nach "Enter passphrase for key ‚/root/.ssh/id_rsa‘:
    ", das war vorher nicht so.

Jetzt kommt’s. Das ganze ist jetzt mehr als eine Woche her. Weitere Seiteneffekte gibt es im Moment nicht, darum will ich auch ungern ein altes Backup einspielen (ich weiß, das hätte ich gleich machen sollen).

Bei welchen Dateien/Verzeichnissen könnte ich nach falschen Dateirechten suchen bzw. welche Logs geben mir mehr Aufschluss.
Vielen Dank schon mal.

Christian

Hallo Christian,

… Oje: da hast du dir ja ein schönes Ei gelegt.
Und ja: gleich Backup zurückspielen wäre wohl besser gewesen.

Es ist sehr schwierig das jetzt wieder gerade zu biegen.
Natürlich kannst du einzeln nach Diensten auf die Suche gehen und
schauen, ob die Rechte nicht stimmen, aber wir reden hier allein unter
etc von ein etlichen Hundert Dateien…

Ich würde dir eher sowas empfehlen:

  1. Backup in das Verzeichnis /backup/temp
    zurückspielen (wenigstens von /etc/)
  2. script schreiben, dass die Rechte dort mit denen unter /etc/
    vergleicht und setzt.
    Bei allem anderen kommst du vom hundertsten zum tausendsten und findest
    in 2 Jahren noch eine Datei die dir deswegen gerade in den Hintern beißt …

LG

Holger

Hallo Holger,

das Verzeichnis /etc/ habe ich zurückgespielt und neu gestartet, die Fehler sind noch die gleichen. Naja, jetzt wartet er beim Hochfahren nicht mehr auf die Netzwerkverbindung.
Ich wurschtel mal noch weiter, irgendwie habe ich noch etwas Hoffnung, dass ich das ohne Zurücksetzen wieder hinbiegen kann.

LG Christian

P.S. in 2 Jahren habe ich lmn7 :wink:

Hallo Christian,

wenn Du Dein Backup z. B. nach /mnt mounten kannst, dann müsste Folgendes gehen:

for f in /etc/*; do chown --reference=/mnt$f $f; done

Danach dann dasselbe Kommando mit /etc// usw., bis keine Dateien mehr gefunden werden. Anschließend würde ich mir /var und /home vornehmen. Ist etwas mühsam, aber vielleicht das, was Du suchst.

Bei sowas gehe ich immer auf Nummer sicher und schreibe zunächst:

for f in /etc/*; do echo chown --reference=/mnt$f $f; done

Dann sehe ich, was passieren würde, und wenn das gut aussieht, kommt das echo weg und es heißt Daumen drücken.

Viele Grüße

Jörg

Danke, das hört sich gut an. Morgen früh probier ich das aus.

Hallo Christian,

da sind jetzt ein paar Sterne verloren gegangen. Ich versuche es nochmal:

for f in /etc/*; do chown --reference=/mnt$f $f; done
for f in /etc/*/*; do chown --reference=/mnt$f $f; done
for f in /etc/*/*/*; do chown --reference=/mnt$f $f; done

usw.

Viel Erfolg!

Jörg

Hallo Jörg!

Damit das nicht passiert bitte Code in das [code]-Tag einbauen. Ich habe das bei bei deinem letzten Post mal gemacht. Ansonsten weitere Infos unter:

https://ask.linuxmuster.net/t/code-scripts-log-im-forum-posten-und-dabei-die-lesbarkeit-nicht-verlieren/966

Beste Grüße

Thorsten

Hallo, Christian,

Du kannst den anfangs genannten Befehl nicht eingegeben haben, denn er funktioniert nicht.
Vermutlich hast Du nicht chmod, sondern chown eingegeben.
Dann hast Du, wenn die sonstige Syntax stimmt, auch nicht rekursiv, wohl aber die komplette erste Ebene aller Dateien und Verzeichnisse unter / verändert, also:

/etc/
/etc/apt 
  • aber nichts drunter -

usw.

Bringt mich zu einer Frage:
Warum in alles in der Welt willst Du die Homeverzeichnisse / Dateien der Benutzer “root” geben ?
Das macht dort alles kaputt ! Und Du erreichst nicht mal alle Dateien

So:
Dann**, wenn Dein Befehl wirklich KEIN rekursives chmod / chown war, so also NICHT:**

chmod -R Zahl /*/*

oder

chown -R root:root /*/*

hast Du nur GANZ WENIG UNHEIL angerichtet, denn die meisten Dateien aus dieser Ebene gehören root schon !

Mach also folgendes:

Melde Dich normal als root an, werde dann ein Nullachtfünfzehnlehrer, bei mir

su cgsman

Dann führst DU den Befehl nochmal aus:

chown root:root /*/*

(Es wird nix passieren, Du bist gerade kein root)
Jetzt siehst Du Dir alle Dateien an, die (mit Fehlrmeldung, da DU ja keine Berechtigungen hattest) zurückgeliefert werden.
Irgendwo ist da eine, die root NICHT haben darf, die muss Du dem rechtmäßigen Besitzer wieder zurückgeben. Die Dateirechte zu vergleichen ist dann nicht schwer, wenn Du parallel Dein backup mountest und vergleichst.

Viel Glück,
Christoph Gü

P.S: Vielleicht hast Du ein weiteres / anderes Problem, das die Namensauflösung verhindert usw…

  • Neustarts schon probiert ?
  • syslog schon ausgewertet ?
  • dmesg ?

Lieber Jörg,

sieht gut aus. Alle Auffälligkeiten sind verschwunden. Ich habe jetzt alle Verzeichnisse der root - Platte (also ohne /home und /var) auf diese Art “geheilt”, bis in die 6. Verzeichnisebene.
Was habe ich gelernt:

  1. chown hat einen Parameter --reference, der in diesem Fall sehr hilfreich war.
  2. vor Veränderungen am System immer einen LVM-Snapshot erstellen
  3. Backup läuft nun wöchentlich als Vollbackup und täglich per rsync
  4. langsamer tippen :wink:

Danke auch allen anderen Helfern.

@cgsman (Christoph?): die Dateibesitzer werden nicht root:root, sondern wie die aus dem Backup, jedenfalls für die Dateien, die im Backup vorhanden waren.