Sie haben erwähnt, d|xargs
und f|xargs
doch keiner von ihnen macht Sinn für sich. Der erste Befehl kann wie folgt geschrieben werden:
{ find /backup/folder -type d ; } | { xargs chmod 770 ; }
Die Frage kann also lauten: Was macht find … | xargs …
das? Es nimmt welche find
Ausgaben und macht es Argumente dessen, was danach kommt xargs
.
Im ersten Befehl find
findet alle Verzeichnisse unter /backup/folder
(einschließlich /backup/folder
. Dann xargs
führt Sie Folgendes aus:
chmod 770 <all_these_directories_here>
Der Effekt ist, dass alle diese Verzeichnisse jetzt Berechtigungen haben 770
(es sei denn, Sie konnten sie überhaupt nicht ändern). Dies bedeutet vollen Zugriff für den Besitzer, die Gruppe, keinen Zugriff für andere Benutzer.
Der zweite Befehl versucht, 660
Berechtigungen für alle Dateien (wegen -type f
) unter festzulegen /backup/folder
. Dies bedeutet Lese- und Schreibberechtigung für den Eigentümer, das gleiche für die Gruppe, keinen Zugriff für andere Benutzer.
Note chmod
hat eine -R
Option, die es rekursiv macht. Dies ist jedoch kaum sinnvoll, wenn Sie alle Berechtigungen gleichzeitig festlegen müssen, da Sie fast immer andere Berechtigungen für Verzeichnisse benötigen als für Dateien, wie in diesem Fall.
Durch das Aufrufen chmod -R 770 /backup/folder
werden alle darin enthaltenen Dateien als ausführbare Dateien (für ihren Besitzer und die Gruppe) festgelegt. Dies ist selten das, was Sie möchten. Auf der anderen Seite chmod -R 660 /backup/folder
wird verhindert, dass Sie Verzeichnisse durchsuchen.
Das Laufen find -type … | xargs chmod …
(oder find -type … -exec chmod … {} +
) mit Verzeichnissen und (separaten) Dateien ist der richtige Weg.