/ / Linux - listet alle Unterverzeichnisse auf und ruft ACL - Linux, acl, ls auf

Linux - listet alle Unterverzeichnisse auf und erhält ACL - linux, acl, ls

Ich versuche zu:

  1. Listen Sie alle Unterverzeichnisse in einem Verzeichnis der obersten Ebene (/ shared) auf und geben Sie diese in einer Datei namens verzeichnisliste aus
  2. Anschließend möchte ich getfacl mit der Datei als Eingabe ausführen und die Ergebnisse in eine Datei namens acl_list ausgeben

So erhalten Sie letztendlich die ACLs für alle Unterverzeichnisse in / shared.

Die Schritte, die ich versuche, sind:

  1. ls -d -- /shared/*/*/*/ > directory_list
  2. getfacl < directory_list > acl_list

Gibt es einen anderen Befehl, für den ich verwenden kann (1)Dort, wo die Unterverzeichnisse rekursiv aufgelistet werden, scheint es, dass -dr (rekursiv Verzeichnisse) nicht funktioniert. Ich weiß auch nicht, wie viele Unterverzeichnissebenen es gibt.

Wenn ich den 2. Befehl ausführte, scheint es ein paar Syntaxfehler zu geben, die verhindern, dass er ausgeführt wird, aber ich habe die Syntax von den Linux-Man-Pages überprüft und sollte richtig sein.

Kann mir jemand in die richtige Richtung zeigen?

Vielen Dank

Antworten:

2 für die Antwort № 1
  1. Benutzen find um eine rekursive Liste zu erstellen:

    find /shared -type d -print > directory_list
    
  2. getfacl erwartet, dass die Dateinamen Befehlszeilenargumente sind, es liest jedoch keine Standardeingaben xargs diese Übersetzung durchführen:

    xargs -d "n" getfacl < directory_list > acl_list
    

Das -d Die Option gibt das Trennzeichen an und überschreibt die Standardeinstellung von Leerzeichen. Ich glaube jedoch, dass dies eine GNU-Erweiterung ist, die möglicherweise nicht in allen Versionen von xargs. Wenn Sie es nicht verwenden können, müssen Sie eine Schleife schreiben:

while read -r filename; do
getfacl "$filename"
done < directory_list > acl_list

0 für die Antwort № 2

Das find Befehl sollte Ihnen das geben, was Sie brauchen:

find /shared -type d

-type d beschränkt die Ausgabe nur auf Verzeichnisse.


0 für die Antwort № 3

Ich weiß, dass Sie tatsächlich darum gebeten haben, aber benötigen Sie technisch die Zwischenverzeichnis_Liste?

find /shared -type d -print -exec getfacl "{}" + > acl_list