En el último artículo
Como extender las posibilidades de UGO hacia ACL (Access Control List) explicaba como instalar y ver y aplicar acls básicas para resolver algunos problemas de acceso que con el método UGO nos costaría bastante o simplemente no podríamos hacer. En este artículo quiero extender un poco el uso de las acl's explicando como poder borrar una acl (o todas), hacerla recursiva o hacer una acl por defecto.
Aplicar una acl por defecto
Cuando aplicas una acl sobre una carpeta tenemos el problema que las subcarpetas que se creen dentro de ella no heredan automáticamente estas acls. Así pues, en muchos casos, las acls base no nos satisfacen del todo. Si lo que queremos es se apliquen las acl automáticamente en los archivos y carpetas nuevos que se creen dentro, para ello tenemos que aplicar una acl por defecto. Para hacer esto:
setfacl -d -m g:prof_1er:rwx 1er_Grado
getfacl 1er_Grado
# file: 1er_Grado
# owner: root
# group: root
user::rwx
group::r-x
other::---
default:user::rwx
default:group::r-x
default:group:prof_1er:rwx
default:mask::rwx
default:other::---
Si miramos el man:
-d, --default
All operations apply to the Default ACL. Regular ACL entries in the input set are promoted to Default ACL entries. Default ACL entries in the input set are discarded. (A warning is issued if
that happens).
Borrar una acl
Para borrar una acl (por ejemplo, si a una carpeta hemos dado privilegios a diferentes grupos y queremos sacar sólo a uno) lo podemos hacer de la siguiente manera:
setfacl -x g:prof_1er 1er_Grado/
Si miramos el man:
The -x (--remove) and -X (--remove-file) options remove ACL entries. It is not an error to remove an entry which does not exist. Only ACL entries without the perms field are accepted as parameters, unless POSIXLY_CORRECT is defined.
Borrar todas las acl en un fichero
Para borrar todas acl que tengamos aplicadas sobre una carpeta/archivo lo podremos hacer de la siguiente manera:
Imaginemos que tenemos:
getfacl 1er_Grado/
# file: 1er_Grado/
# owner: root
# group: root
user::rwx
group::r-x
group:prof_1er:rwx
mask::rwx
other::---
Bien, ahora lo que queremos es dejarlo como si nunca hubiéramos aplicado una acl:
setfacl -b -k 1er_Grado/
getfacl 1er_Grado/
# file: 1er_Grado/
# owner: root
# group: root
user::rwx
group::r-x
other::---
Si miramos el man:
-b, --remove-all
Remove all extended ACL entries. The base ACL entries of the owner, group and others are retained.
-k, --remove-default
Remove the Default ACL. If no Default ACL exists, no warnings are issued.
Es decir, con el -b borramos las acl y con -k borramos las acl por defecto.
Aplicar una acl de modo recursivo
De la misma manera que lo hacemos con UGO, si queremos aplicar una ACL de modo recursivo, lo podremos hacer:
setfacl -R -m g:prof_1er:rwx 1er_Grado
Si miramos el man:
-R, --recursive
Apply operations to all files and directories recursively. This option cannot be mixed with `--restore'.