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.

Comandos especiales de definición de ACL para ficheros y directorios.

Gestión de contraseñas y políticas (chage, /etc/login.defs).

Índice de la sección

Índice del curso