ACLs: getfacl, setfacl.
...
Introducción
Además del sistema tradicional de permisos (u, g, o), Linux permite un control más fino mediante ACLs (Access Control Lists), que permiten asignar permisos específicos a múltiples usuarios o grupos sobre un mismo archivo o directorio.
Las ACLs permiten:
- dar permisos a usuarios concretos sin cambiar el propietario
- asignar permisos diferentes a varios usuarios simultáneamente
- mantener permisos más detallados que u/g/o
Sin ACLs:
- solo puedes definir permisos para usuario, grupo y otros
Con ACLs:
- usuario juan → lectura
- usuario ana → lectura y escritura
- grupo devs → solo lectura
getfacl
Muestra las ACLs de un archivo o directorio.
Ejemplo:
$ getfacl archivo.txt
Salida típica:
# file: archivo.txt
# owner: juan
# group: juan
user::rw-
user:ana:r--
group::r--
mask::r--
other::---
Este comando muestra los permisos estándar y las ACLs adicionales.
setfacl
Permite añadir, modificar o eliminar ACLs.
Ejemplo:
$ setfacl -m u:juan:rw archivo.txt
Este comando da permisos de lectura y escritura al usuario ana.
Opciones comunes:
- -m → modifica o añade una ACL
- -x → elimina una ACL
- -b → elimina todas las ACLs
- -R → aplica de forma recursiva
Si ves que te falla con un mensaje como: setfacl: Opción -m: Argumento inválido cerca del carácter 3
Es posible que el usuario no exista, comprueba que es así.
Veamos cómo podemos aplicar acls por defecto en directorios
Permiten definir permisos que heredarán los nuevos archivos:
$ setfacl -d -m u:juan:rw carpeta
Este comando hace que los nuevos archivos dentro de carpeta hereden permisos para juan.