Les llistes de control d’accés (ACL, de l’anglès Access Control Lists) són mecanismes de seguretat que defineixen quins usuaris, grups o processos tenen permís per accedir a recursos del sistema (fitxers, directoris, serveis de xarxa, etc.) i amb quins permisos concrets.
Les ACL amplien el model de permisos tradicional d’Unix/Linux (propietari/grup/altres) permetent assignar permisos individuals a qualsevol usuari o grup, sense necessitat de canviar la propietat dels fitxers.
El model POSIX clàssic assigna permisos en tres nivells:
| Nivell | Descripció |
|---|---|
user |
El propietari del fitxer |
group |
El grup propietari |
other |
La resta d’usuaris |
Aquest model és limitat: no permet donar permisos a un usuari concret sense modificar el grup ni la propietat del fitxer.
Les POSIX ACL solucionen aquest problema afegint entrades addicionals per a usuaris i grups específics.
El sistema de fitxers ha d’estar muntat amb suport ACL. En sistemes moderns (ext4, xfs, btrfs), les ACL estan habilitades per defecte.
Per verificar-ho:
tune2fs -l /dev/sdaX | grep "Default mount options"O comprovant que al /etc/fstab apareix l’opció acl (en alguns sistemes és implícita).
getfacl i setfacl# Debian/Ubuntu
sudo apt install acl
# Fedora/RHEL
sudo dnf install acl
# Arch/Manjaro
sudo pacman -S aclgetfacl fitxer.txtExemple de sortida:
# file: fitxer.txt
# owner: ramon
# group: professors
user::rw-
user:alumne1:r--
group::r--
group:admins:rw-
mask::rw-
other::---
# Donar permisos de lectura i escriptura a un usuari concret
setfacl -m u:alumne1:rw fitxer.txt
# Donar permisos a un grup
setfacl -m g:admins:rx /directori/
# Eliminar una entrada ACL concreta
setfacl -x u:alumne1 fitxer.txt
# Eliminar totes les ACL del fitxer
setfacl -b fitxer.txtLes ACL per defecte s’apliquen als fitxers i subdirectoris creats dins d’un directori:
setfacl -d -m u:alumne1:rw /directori/Tots els nous fitxers creats dins de /directori/
heretaran aquesta ACL.
La màscara limita els permisos efectius de les entrades ACL per a
usuaris i grups (excepte el propietari i other). Es calcula
automàticament, però es pot ajustar:
setfacl -m mask::r-- fitxer.txtImportant: Si un usuari té
rw-a la seva ACL, però la màscara ésr--, el permís efectiu seràr--.
# Exportar les ACL d'un directori
getfacl -R /directori/ > acl_backup.txt
# Restaurar les ACL
setfacl --restore=acl_backup.txt# Veure ACL
getfacl fitxer
# Afegir permís a usuari
setfacl -m u:usuari:rwx fitxer
# Afegir permís a grup
setfacl -m g:grup:rx fitxer
# ACL per defecte en directori
setfacl -d -m u:usuari:rw /dir/
# Eliminar una entrada
setfacl -x u:usuari fitxer
# Eliminar totes les ACL
setfacl -b fitxer
# Backup d'ACL
getfacl -R /dir/ > backup_acl.txt
# Restaurar ACL
setfacl --restore=backup_acl.txtman acl — Documentació POSIX ACL al sistemaman setfacl — Manual de l’ordre setfaclman getfacl — Manual de l’ordre getfacl