No olvides que en las ciencias un problema casi siempere suele tener diferentes resoluciones, no obstante nosotros enseñamos lo más óptimo y mejor.
Solución:
setfacl
tiene un recursivo opción (-R
) al igual que chmod
:
-R, --recursive Apply operations to all files and directories recursively. This option cannot be mixed with `--restore'.
también permite el uso de la mayúscula-x X
permiso, lo que significa:
execute only if the file is a directory or already has execute permission for some user (X)
así que hacer lo siguiente debería funcionar:
setfacl -R -m u:colleague:rwX .
(Todas las citas son de man setfacl
por acl-2.2.52 como se envía con Debian)
Como lo menciona umläute, el comando setfacl -R
con “X” mayúscula es el camino a seguir, como:
setfacl -R -m u:colleague:rwX .
Sin embargo, para aquellos que necesitan volver a aplicar ACL de forma recrusiva (es decir, como “volver a aplicar permisos en subdirectorios” a la Windows).
find . -mindepth 1 | xargs -n 50 setfacl -b --set-file=<(getfacl . | sed -e 's/x$/X/')
Ese comando podría dividirse para evitar errores como setfacl: foobar: Only directories can have default ACLs
.
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/')
Tenga en cuenta que la sintaxis <( something )
es Sustitución de procesos, que es específico de bash. Es posible que deba crear un archivo temporal si usa otro shell.
Si te ha sido útil este post, sería de mucha ayuda si lo compartes con otros programadores de esta manera contrubuyes a dar difusión a esta información.