ACLs (Listas de Control de Acceso) en Linux: guía práctica

acls-en-linux
acls-en-linux

Los permisos clásicos de Linux (propietario, grupo y otros con rwx) son simples y robustos, pero a veces se quedan cortos. Las ACLs (Access Control Lists) permiten dar permisos finos a usuarios o grupos específicos sin cambiar el propietario ni abrir permisos a “otros”. En esta guía de acl verás cómo gestionarlas con getfacl y setfacl y cómo evitar el error más común: la máscara.

Si quieres aprender más sobre Linux, revisa nuestra Guía completa de comandos Linux y nuestro Curso de Linux gratis , te ayudarán a dominar la terminal y a sacar el máximo provecho de este artículo.

Cuándo conviene usar ACLs

  • Compartir un directorio entre varios usuarios sin reorganizar grupos.
  • Dar acceso de solo lectura a un auditor sobre un conjunto de archivos concreto.
  • Definir herencia de permisos en directorios (ACL por defecto) para archivos nuevos.

1) Instalar herramientas ACL (Debian/Ubuntu)

sudo apt update
sudo apt install acl

Comprueba que los comandos existen:

getfacl --version
setfacl --version

2) Ver ACLs con getfacl

Mostrar ACLs de un archivo:

getfacl archivo.txt
# file: archivo.txt
# owner: kamilinux
# group: kamilinux
user::rw-
group::rw-
other::r--

En un directorio (manteniendo la ruta):

getfacl -p /srv/proyecto

Interpretación rápida:

  • user:: permisos del propietario.
  • group:: permisos del grupo propietario.
  • other:: permisos para otros.
  • user:ana: entrada ACL adicional para un usuario.
  • group:dev: entrada ACL adicional para un grupo.
  • mask:: límite de permisos efectivos (clave en troubleshooting).

3) Dar permisos con setfacl (usuarios y grupos)

Permisos a un usuario

setfacl -m u:ana:rw archivo.txt

En directorios, para poder “entrar” necesitas permiso de ejecución (x):

setfacl -m u:ana:rx /srv/datos

Permisos a un grupo

setfacl -m g:dev:rwx /srv/proyecto

Verifica el resultado:

getfacl /srv/proyecto

4) La máscara: el motivo típico de “no funciona”

La entrada mask:: limita permisos efectivos de entradas ACL de usuario/grupo y del grupo base. Si la máscara es de solo lectura, ninguna entrada ACL tendrá permisos efectivos superiores.

Ajustar máscara manualmente:

setfacl -m m:rwx /srv/proyecto

Recalcular máscara automáticamente:

setfacl --mask /srv/proyecto

5) ACLs por defecto (herencia) en directorios

Para que los archivos nuevos hereden permisos dentro de un directorio, define ACLs por defecto:

setfacl -d -m g:dev:rwx /srv/proyecto
setfacl -d -m m:rwx /srv/proyecto

Comprueba:

getfacl /srv/proyecto

6) Quitar ACLs

Quitar una entrada concreta:

setfacl -x u:ana archivo.txt

Eliminar todas las ACLs extendidas (mantiene permisos base):

setfacl -b archivo.txt

Eliminar ACLs por defecto del directorio:

setfacl -k /srv/proyecto

Troubleshooting rápido

  • Operation not supported: el filesystem o el montaje puede no soportar ACLs.
  • Permisos inesperados: revisa mask:: con getfacl.
  • En directorios, recuerda que necesitas permiso de ejecución (x) para acceder.

📌 Referencia oficial: getfacl(1) — man7.org · setfacl(1) — man7.org

Resumen

  • ACLs dan permisos finos para usuarios y grupos específicos.
  • Usa getfacl para ver y setfacl para cambiar.
  • La máscara manda: limita permisos efectivos.
  • En directorios compartidos, ACLs por defecto son la clave para herencia.