Was macht das? `Find… -type d | xargs chmod 770`


1

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|xargsund f|xargstut.


Erläutert den weiten Weg in der jetzt vorhandenen Antwort, was Sie vermissen, ist das | ist eine Pipe, die zwei verschiedene Befehle verbindet. Der Find-Teil vor der Pipe erstellt eine Liste und leitet sie an xargs weiter. Kurz gesagt, der erste Suchvorgang sucht nach Verzeichnissen (-type d) und der zweite nach einfachen Dateien (-type f).
Tyson

Antworten:


3

Sie erwähnten d|xargsund f|xargsdoch 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 findausgegeben wird, und argumentiert, was danach ist xargs.

Im ersten Befehl findfinden Sie alle Verzeichnisse unter /backup/folder(einschließlich /backup/folder. Dann xargsfü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, 660Berechtigungen 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 chmodhat eine -ROption, 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/folderwerden 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/folderwerden 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.


Es wäre gut zu erwähnen, dass findund xargssollte vorzugsweise nur mit -print0und verwendet -0werden, um es robuster zu machen.
Slhck

Wie finde ich heraus, was das dund was das fbedeutet? 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?
Zeth

2
@Zeth Lesen Sie die Man - Page: 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
slhck
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.