Was machen diese beiden Zeilen?
find /backup/folder -type d|xargs chmod 770
find /backup/folder -type f|xargs chmod 660
Ich habe herumgegoogelt, kann aber nicht herausfinden, was d|xargs
und f|xargs
tut.
Was machen diese beiden Zeilen?
find /backup/folder -type d|xargs chmod 770
find /backup/folder -type f|xargs chmod 660
Ich habe herumgegoogelt, kann aber nicht herausfinden, was d|xargs
und f|xargs
tut.
Antworten:
Sie erwähnten d|xargs
und f|xargs
doch macht keines von diesen für sich Sinn. Der erste Befehl kann wie folgt geschrieben werden:
{ find /backup/folder -type d ; } | { xargs chmod 770 ; }
Die Frage könnte also lauten: Was macht find … | xargs …
das? Es nimmt, was find
ausgegeben wird, und argumentiert, was danach ist xargs
.
Im ersten Befehl find
finden Sie alle Verzeichnisse unter /backup/folder
(einschließlich /backup/folder
. Dann xargs
führt:
chmod 770 <all_these_directories_here>
Dies hat zur Folge, dass jetzt alle diese Verzeichnisberechtigungen gültig sind 770
(es sei denn, Sie konnten sie überhaupt nicht ändern). Dies bedeutet vollen Zugriff für den Eigentümer, die Gruppe, keinen Zugriff für andere Benutzer.
Der zweite Befehl versucht, 660
Berechtigungen für alle Dateien (aufgrund von -type f
) unter festzulegen /backup/folder
. Dies bedeutet, dass der Eigentümer über Lese- und Schreibrechte verfügt, ebenso wie die Gruppe, und dass andere Benutzer keinen Zugriff haben.
Note chmod
hat eine -R
Option, die es rekursiv macht. Es ist jedoch kaum sinnvoll, wenn Sie alle Berechtigungen auf einmal festlegen müssen, da Sie für Verzeichnisse fast immer andere Berechtigungen 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 Eigentümer und die Gruppe) festgelegt, was selten gewünscht wird. Auf der anderen Seite chmod -R 660 /backup/folder
werden Sie daran gehindert, Verzeichnisse zu durchsuchen.
Das Ausführen find -type … | xargs chmod …
(oder find -type … -exec chmod … {} +
) von Verzeichnissen und (separaten) Dateien ist der richtige Weg.
find
und xargs
sollte vorzugsweise nur mit -print0
und verwendet -0
werden, um es robuster zu machen.
d
und was das f
bedeutet? Ich kann keine Hilfe oder Dokumentation für den Befehl find finden. Und slhck - warum ist das mit diesen Flaggen "robuster"? Welchen Unterschied macht es?
man find
. Oder die Dokumentation . Über Robustheit: Sie möchten, dass Ihre Shell-Befehle robust gegenüber Dateien sind, die ungewöhnliche Zeichen enthalten. In diesem Fall ist sogar ein Leerzeichen "ungewöhnlich", da es einige Befehle beschädigen kann, insbesondere solche, die auf dem Analysieren von Dateilisten beruhen. Lesen Sie beispielsweise FAQ-Eintrag Nummer 1 hier: mywiki.wooledge.org/BashPitfalls