Anteriormente expliqué cómo utilizar setfacl
para borrar todas las entradas de una ACL en Linux mediante la opción -b
. Veamos ahora cómo borrar una única entrada de una ACL, por ejemplo para el caso en el que necesitamos quitar privilegios previamente otorgados.
Pasemos directamente a un ejemplo. El directorio "images" tiene la siguiente ACL:
root@debian:/usr/local/datos/dir1# getfacl images/ # file: images/ # owner: root # group: root user::rwx group::r-x group:www-data:rwx group:webadmin:rwx mask::rwx other::--- default:user::rwx default:group::r-x default:group:www-data:rwx default:group:webadmin:rwx default:mask::rwx default:other::---
Se observa que el usuario y grupo dueño del mismo es "root", pero a su vez se ha otorgado permiso de lectura, escritura y ejecución a los grupos "www-data" y "webadmin".
Por otro lado, ambos grupos "www-data" y "webadmin" tienen sendas entradas por defecto, que hacen que todo nuevo archivo o directorio herede dichos permisos.
Supongamos ahora que se necesitan quitar los permisos para el grupo "webadmin". Para ello es necesario recurrir a la opción -x
. Esta opción toma como parámetro la especificación de la entrada que se desea eliminar, sin la parte que corresponde a los permisos.
De esta forma, para eliminar tanto la entrada como la ACL por defecto, se necesitan ejecutar los siguientes comandos:
root@debian:/usr/local/datos/dir1# setfacl -R -x group:webadmin ./images root@debian:/usr/local/datos/dir1# setfacl -R -x default:group:webadmin ./images
En este caso se aplica de forma recursiva tanto para el directorio "images" como para todos sus archivos y subdirectorios. Ambos comandos eliminan las entradas correspondientes sin importar qué permisos tengan. Por ende no es relevante ni necesario que los permisos coincidan en el resto de los archivos y subdirectorios cuando se aplica recursivamente. Si encuentra una entrada que coincide la borra; sino, no es error y simplemente continúa.
Al listar nuevamente la ACL, se observa que se han mantenido el resto de las entradas intactas, sólo se han eliminado las entradas correspondientes al grupo "webadmin":
root@debian:/usr/local/datos/dir1# getfacl ./images # file: images # owner: root # group: root user::rwx group::r-x group:www-data:rwx mask::rwx other::--- default:user::rwx default:group::r-x default:group:www-data:rwx default:mask::rwx default:other::---
Para más información, consultar la página de manual de setfacl
:
man setfacl