Ich habe versucht, die Berechtigungen für ein paar Boxen zu bereinigen, und habe den chmod-Mann sowie die gesamte Internetdokumentation durchsucht, die ich ohne Glück bearbeitet habe - also los geht's.
Grundsätzlich habe ich ein Verzeichnis mit vielen Unterverzeichnissen und Dateien - und ich möchte die folgenden Berechtigungen festlegen:
Für Verzeichnisse: 770 (u + rwx, g + rwx, o-rwx)
Für Dateien: 660 (U + rw, g + rw, ax, o-rw)
Ich möchte versuchen, dies nach Möglichkeit mit einem einzigen rekursiven chmod zu tun, um zu vermeiden, dass jedes Verzeichnis erneut durchlaufen wird und Datei-für-Datei-Berechtigungen festgelegt werden.
Ich kann mir vorstellen, dass es einen Weg geben muss, dies zu tun, ohne ein eigenes Shell-Skript zu schreiben - aber ich konnte nichts finden.
Ich schätze Ihre Hilfe!
quelle
Keine Notwendigkeit für Skripte.
// Verzeichnisse:
// Dateien:
quelle
In Ihrem Fall muss es möglicherweise nicht so kompliziert sein, wie andere es sich vorgestellt haben (obwohl
find
es in der Tat ein gutes Werkzeug für solche Dinge im Allgemeinen ist). Der Unterschied zwischen den Modi ist das Ausführungsbit. Wenn für keine Dateien bereits das Ausführungsbit gesetzt ist, können Sie dies in einem einzigen Aufruf von tunchmod
, genau wie Sie es gewünscht haben.Der Schlüssel hier ist das Kapital
X
, das auf der Manpage erklärt wirdWenn für Ihre Dateien das Ausführungsbit noch nicht gesetzt ist, wird es nur für Verzeichnisse gesetzt.
quelle
Zumindest für meinen Anwendungsfall war
rsync
das Kopieren des Verzeichnisses auf sich selbst viel schneller als daschmod
direkte Verwenden mit einer Liste von Dateien ausfind
.Wenn Sie
chown
dem gleichen Vorgang ein hinzufügen möchten ,rsync
können Sie dies auch mit der--chown=user:group
Option tun .quelle
Sauber und einfach:
quelle
find ... -exec chmod ... {} \;