Ejemplo de ACL: control de acceso por usuarios

En este post compartiremos un ejemplo de ACL para ilustrar el tema que comenzamos en el anterior. En particular, explicaremos cómo otorgar distintos tipos de acceso a un archivo para dos usuarios que pertenezcan al mismo grupo. Es importante aclarar que para utilizar ACLs es necesario que el sistema de archivos haya sido montado con la opción respectiva. Por defecto, los sistemas ext4 se montan con esta funcionalidad. Podemos verificar esto con el comando tune2fs seguido de la opción -l y del sistema de archivos a verificar, por ejemplo tune2fs -l /dev/sda1.

Ejemplo de ACL

Para empezar, supongamos el siguiente escenario. Los usuarios gabriel y fulano son miembros del grupo familia, como podemos ver en la Fig. 1. Por eso, ambos tienen acceso de lectura y escritura al archivo /comunes/archivoprueba. Con el esquema tradicional de permisos (ugo/rwx) se vuelve un tanto complicado asignar diferentes niveles de acceso a este archivo para cada usuario.

Ejemplo de ACL: introduciendo la necesidad de distintos tipos de acceso
Figura 1 – Ejemplo de ACL: introduciendo la necesidad de distintos tipos de acceso

Para remediar esta situación, podemos utilizar listas de control de acceso. Supongamos que deseamos que gabriel continúe teniendo permisos de escritura, pero que fulano solamente pueda leer. Para lograr ese objetivo, crearemos una ACL de sólo lectura en /comunes/archivoprueba para este último. La sintaxis es la siguiente:

setfacl -m u:uid:perms /ruta/al/archivo

donde uid puede ser el UID de la cuenta en cuestión o bien del nombre de usuario, y perms representa el permiso que deseamos asignar.

En nuestro caso, esto significa:

setfacl -m u:fulano:r /comunes/archivoprueba

Con getfacl podemos verificar que se haya aplicado la ACL. Finalmente, en la Fig. 2 vemos el resultado de intentar escribir en el mismo archivo luego del cambio:

Ejemplo de ACL para asignar distintos tipos de acceso a dos usuarios
Figura 2 – Ejemplo de ACL para asignar distintos tipos de acceso a dos usuarios

Para eliminar la ACL, podemos utilizar el siguiente comando:

setfacl -x u:fulano /comunes/archivoprueba

Espero que este post les haya resultado útil (¡más info en el siguiente!). ¡Nos leemos en breve!

¡Aprovechá la oportunidad de suscribirte al blog para recibir en tu correo el post nuestro de cada día, novedades, y promociones exclusivas!