setfacl
hat eine rekursive Option (-R
) genauso wie chmod
:
-R, --recursive Apply operations to all files and directories recursively. This option cannot be mixed with `--restore'.
es erlaubt auch die Verwendung des großen x X
Erlaubnis, was bedeutet:
execute only if the file is a directory or already has execute permission for some user (X)
Folgendes sollte also funktionieren:
setfacl -R -m u:colleague:rwX .
(Alle Zitate stammen aus man setfacl
für acl-2.2.52 wie mit Debian ausgeliefert)
Wie von umläute erwähnt, ist der Befehl setfacl -R
mit Großbuchstaben "X" ist der Weg zu gehen, wie:
setfacl -R -m u:colleague:rwX .
Allerdings für diejenigen, die ACL rezidiv neu anwenden müssen (d.h. wie "Berechtigungen für Unterverzeichnisse erneut anwenden" à la Windows).
find . -mindepth 1 | xargs -n 50 setfacl -b --set-file=<(getfacl . | sed -e 's/x$/X/')
Dieser Befehl könnte aufgeteilt werden, um Fehler wie setfacl: foobar: Only directories can have default ACLs
zu vermeiden .
find . -mindepth 1 -type d| xargs -n 50 setfacl -b --set-file=<(getfacl . | sed -e 's/x$/X/')
find . -mindepth 1 -type f| xargs -n 50 setfacl -b --set-file=<(getfacl . | grep -v '^default:' | sed -e 's/x$/X/')
Beachten Sie, dass die Syntax <( something )
ist Prozesssubstitution , das spezifisch für Bash ist. Möglicherweise müssen Sie eine temporäre Datei erstellen, wenn Sie eine andere Shell verwenden.