Como señala Gilles, setfacl
los permisos predeterminados especifican los permisos máximos, básicamente reemplazando el umask
. Así que los archivos recién creados serán rw
a menos que la aplicación que creó el archivo solicite especialmente que sea ejecutable.
$ mkdir test
$ touch test/oldfile
$ getfacl test/oldfile
# file: test/oldfile
# owner: myuser
# group: myuser
user::rw-
group::r--
other::r--
$ setfacl -m d:g:mygroup:rwx test
$ touch test/newfile
$ getfacl test/newfile
# file: test/newfile
# owner: myuser
# group: myuser
user::rw-
group::r-x #effective:r--
group:mygroup:rwx #effective:rw-
mask::rw-
other::r--
Tenga en cuenta los permisos efectivos anteriores. (Solo hay unos pocos programas que solicitarán establecer el bit de ejecución en los archivos que crea, por ejemplo. gcc
para ejecutables y cp
si el archivo que se copiaba era ejecutable)
¿O quiso decir que el primer comando setfacl estaba funcionando como usted quería, pero el segundo no lo estaba? En otras palabras, ¿está buscando reparar los permisos en los archivos antiguos, asegurándose de que los directorios sean transitables, sin dar a otros archivos regulares permisos de ejecución?
Mi version de setfacl
permite X
exactamente como quieras, por ejemplo:
setfacl g:mygroup:rwX
$ setfacl --version
setfacl 2.2.49
$ rm -r test
$ mkdir test
$ mkdir test/olddir
$ touch test/oldfile
$ find test -ls
107513 4 drwxr-xr-x 3 myuser myuser 4096 Dec 22 01:56 test
107539 0 -rw-r--r-- 1 myuser myuser 0 Dec 22 01:56 test/oldfile
107529 4 drwxr-xr-x 2 myuser myuser 4096 Dec 22 01:56 test/olddir
$ setfacl -Rm g:somegroup:rwx test
$ find test -ls
107513 4 drwxrwxr-x 3 myuser myuser 4096 Dec 22 01:56 test
107539 0 -rw-rwxr-- 1 myuser myuser 0 Dec 22 01:56 test/oldfile
107529 4 drwxrwxr-x 2 myuser myuser 4096 Dec 22 01:56 test/olddir
$ rm -r test
$ mkdir test
$ mkdir test/olddir
$ touch test/oldfile
$ setfacl -Rm g:somegroup:rwX test
$ find test -ls
107513 4 drwxrwxr-x 3 myuser myuser 4096 Dec 22 01:56 test
107539 0 -rw-rw-r-- 1 myuser myuser 0 Dec 22 01:56 test/oldfile
107529 4 drwxrwxr-x 2 myuser myuser 4096 Dec 22 01:56 test/olddir
Si tu versión de setfacl
no soporta eso, porque no usar find
?
sobrescriba los permisos, configurándolos en rw para archivos y rwx para dirs
$ find . \( -type f -exec setfacl -m g:mygroup:rw '{}' ';' \) \
-o \( -type d -exec setfacl -m g:mygroup:rwx '{}' ';' \)
establecer los permisos de ACL de mi grupo según los permisos de grupo existentes
$ find . \( -perm -g+x -exec setfacl -m g:mygroup:rw '{}' ';' \) \
-o \( -exec setfacl -m g:mygroup:rwx '{}' ';' \)
Probablemente querrá comprobar que la máscara de grupo proporciona permisos efectivos. Si no, tendrás que ejecutar esto también:
$ find . -type d -exec chmod g+rwX '{}' ';'