Gestión de permisos de acceso con ACL setfacl
, getfacl
1. Introducción a ACL
Imagínate que eres el organizador de una fiesta (o el administrador del sistema). Quieres que los invitados puedan entrar a ciertas habitaciones, y a otras, solo con tu permiso. Los permisos básicos de acceso en Linux rwx
te permiten gestionar el acceso solo para tres categorías: el propietario (user), el grupo (group) y todos los demás (others). Pero, ¿y si necesitas dar acceso a una habitación solo a un amigo especial? El guardián del modelo estándar de permisos te dirá: "Oye, eso no se puede hacer así". Aquí es donde ACL entra en acción para echarte una mano.
ACL (Access Control Lists
) resuelve el problema de la limitación del clásico sistema de permisos de tres niveles, permitiendo definir derechos de acceso para usuarios y grupos específicos.
Características principales de ACL:
- Configurar permisos individuales en archivos y directorios para usuarios y grupos específicos.
- Herencia de permisos para nuevos archivos dentro de un directorio.
- Configuración más flexible que el enfoque tradicional con
chmod
.
2. ¿Cómo saber si están activadas las ACL?
Antes de empezar a gestionar las ACL, vamos a averiguar si tu sistema las soporta. Puedes comprobarlo con el comando:
mount | grep acl
Si el sistema de archivos fue montado con la opción acl
, ¡estás listo para empezar! De lo contrario, será necesario volver a montar la partición agregando acl
:
sudo mount -o remount,acl /your/mount/point
¡Eso es todo, ahora estás listo para la acción! Es hora de sumergirse en la práctica.
3. Comandos principales para trabajar con ACL
Comando | Descripción |
---|---|
getfacl |
Obtener la lista actual de ACL para un archivo o directorio. |
setfacl |
Configurar o modificar los ACL para un archivo o directorio. |
setfacl -m |
Modificar los permisos actuales. |
setfacl -x |
Eliminar permisos específicos. |
setfacl -b |
Eliminar todas las entradas de ACL para un archivo o directorio. |
setfacl -d |
Establecer permisos predeterminados para un directorio que se heredan por los archivos. |
¡Ahora vamos a entender cada uno de estos comandos con ejemplos!
Obtener los ACL actuales getfacl
Supongamos que tenemos un archivo llamado example.txt
. Queremos ver los permisos actuales utilizando ACL. Para esto basta un solo comando:
getfacl example.txt
El resultado aproximado será algo así:
# file: example.txt
# owner: user1
# group: group1
user::rw-
group::r--
other::---
Esta lista muestra los permisos estándar: el propietario user1
puede leer y escribir, el grupo group1
solo puede leer, y otros usuarios no tienen acceso en absoluto.
Configuración de permisos individuales (setfacl
)
Ahora imaginemos que el usuario user2
necesita permiso para escribir en el archivo example.txt
. Esto se puede hacer así:
sudo setfacl -m u:user2:rw example.txt
El comando significa:
-m
: modificación de permisos.u:user2:rw
: añadir o modificar permisos para el usuariouser2
(lectura-escritura).
Verifiquemos el resultado:
getfacl example.txt
Ahora el resultado se ve así:
# file: example.txt
# owner: user1
# group: group1
user::rw-
user:user2:rw # ¡Regla adicional!
group::r--
other::---
Eliminar permisos individuales setfacl -x
Si decides que el usuario user2
ya no debe tener permiso para escribir, los permisos se pueden eliminar:
sudo setfacl -x u:user2 example.txt
Verifiquemos:
getfacl example.txt
¡Ya no hay reglas adicionales para user2
!
Configuración de permisos para grupos
Los permisos a través de ACL se pueden establecer no solo para usuarios individuales, sino también para grupos enteros. Por ejemplo, para dar al grupo devteam
acceso de lectura y escritura, ejecuta:
sudo setfacl -m g:devteam:rw example.txt
Configuración de permisos predeterminados setfacl -d
A menudo es necesario establecer permisos automáticamente para todos los nuevos archivos y directorios dentro de un directorio específico. Por ejemplo, quieres que todos los archivos en el directorio project_dir
tengan permiso de escritura para el usuario developer
. En este caso:
sudo setfacl -d -m u:developer:rw project_dir
Para verificar los permisos:
getfacl project_dir
Ahora para todos los nuevos archivos y subdirectorios en project_dir
se aplicará esta regla predeterminada.
Eliminar todos los ACL setfacl -b
Si quieres limpiar completamente todos los ACL de un archivo:
sudo setfacl -b example.txt
El archivo volverá al modelo estándar de permisos user:group:others
.
4. Uso práctico de ACL
Escenario: Trabajo colaborativo en un proyecto
Supongamos que tienes un proyecto almacenado en el directorio /project
. En él trabajan tres personas:
Alice
debe tener acceso completo (lectura, escritura, ejecución).Bob
solo debe poder leer los archivos.Eve
no debe poder ver el directorio en absoluto.
Configuramos esto usando ACL:
Dar a
Alice
acceso completo:sudo setfacl -m u:alice:rwx /project
Dar a
Bob
acceso solo a lectura:sudo setfacl -m u:bob:r-- /project
Para
Eve
no hacemos nada: no tendrá acceso por defecto.
Veamos la lista actual de ACL:
getfacl /project
Salida:
# file: /project
# owner: root
# group: root
user::rwx
user:alice:rwx
user:bob:r--
group::---
other::---
Ahora Alice
puede trabajar sin restricciones, Bob
solo puede visualizar los archivos, y Eve
queda fuera.
5. Errores potenciales y sus soluciones
Los ACL no funcionan aunque los configuraste. Es posible que la partición no esté montada con la opción
acl
. Usamount
para verificar y vuelve a montarla si es necesario.Conflicto entre permisos estándar y ACL. ACL siempre tiene prioridad sobre los permisos estándar. Por ejemplo, incluso si "otros" tienen denegada la lectura, ACL puede permitir el acceso a un usuario específico.
Olvidar los ACL heredados. Si configuraste permisos
-d
(default), verifica si estas reglas se heredaron en los archivos nuevos.
¿Por qué es importante?
Gestionar permisos a través de ACL te permite configurar el acceso de forma flexible para diferentes usuarios y grupos. Esto es especialmente útil en servidores de trabajo, donde se requiere una distribución de permisos teniendo en cuenta las roles. Por ejemplo, en empresas, las ACL se utilizan para restringir el acceso sólo a quienes "están al tanto": una de las claves de la seguridad.
Adicionalmente, puedes consultar la guía oficial de ACL para entender aún mejor sus capacidades.
GO TO FULL VERSION