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 aclComprueba que los comandos existen:
getfacl --version
setfacl --version2) 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/proyectoInterpretació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.txtEn directorios, para poder “entrar” necesitas permiso de ejecución (x):
setfacl -m u:ana:rx /srv/datosPermisos a un grupo
setfacl -m g:dev:rwx /srv/proyectoVerifica el resultado:
getfacl /srv/proyecto4) 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/proyectoRecalcular máscara automáticamente:
setfacl --mask /srv/proyecto5) 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/proyectoComprueba:
getfacl /srv/proyecto6) Quitar ACLs
Quitar una entrada concreta:
setfacl -x u:ana archivo.txtEliminar todas las ACLs extendidas (mantiene permisos base):
setfacl -b archivo.txtEliminar ACLs por defecto del directorio:
setfacl -k /srv/proyectoTroubleshooting 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.
