2015-04-15 24 views
5

Ein Junior-Team-Mitglied hat eine böse chmod -R 777 in /etc/ und Ursache SSH kann nicht remote auf einem Ubuntu-Server einloggen. Jetzt behob ich dieses Anmeldungsproblem, indem ich die korrekten Dateiberechtigungen auf , /etc/sudoers, /etc/ssl/* manuell versetzte, indem ich anderes normales System vergleiche. Aber es gibt so viele andere Dateien, die zukünftige Probleme verursachen können.Sync Dateiberechtigungen * nur *

Ich denke, Rsync zu verwenden, um die Arbeit zu tun, aber nicht wollen, um Dateiinhalte zu synchronisieren, nur Berechtigungen, keine Arbeit mehr.

Ist das möglich? Ich sehe rsync hat -a Option, aber es tut zu viel.

+0

Was Sie fragen, ist möglich, aber nicht mit rsync, fürchte ich. – 4ae1e1

+0

Vielen Dank für die Antwort, also was ist das? Ich bin offen für andere Werkzeuge. – kyrre

+0

Nun, Sie können ein Skript schreiben, um die Attribute von Dateien auf einem System zu lesen und die Attribute auf dem anderen zu setzen. Nichts Magisches. – 4ae1e1

Antwort

8

Wenn Sie den „normalen“ Inhalt von/etc auf dem gleichen System haben (wie in einem anderen Verzeichnis montiert, lassen Sie uns /mnt/correct/etc sagen), könnten Sie den --reference Parameter chmod und chown Befehle verwenden, und kombinieren es mit find dass aus dem "normalen" Verzeichnis gestartet:

$ cd /mnt/correct/etc 
$ find . ! -type l -exec chown -v --reference='{}' /etc/'{}' \; 
$ find . ! -type l -exec chmod -v --reference='{}' /etc/'{}' \; 

(ich nehme an, Sie auf einem UNIX-System sind mit GNU coreutils Versionen von chmod und chown.)

der "! -type l" Zustand in find schließt symbolische Links aus, da sonst chmod die Berechtigungen des Links verwendet, um die Datei zu ändern, auf die der Link verweist (und das Gleiche gilt für chown).

+0

Das funktioniert sehr gut aber ich wollte nur darauf hinweisen, dass du vor dem 'chmod' 'chown' solltest, da chown setuid/setgid Bits löscht. –