Llistes de Control d'Accés (ACL)

1. Introducció

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.

2. ACL en sistemes de fitxers Linux

2.1. Model de permisos tradicional vs. ACL

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.

2.2. Requisits

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).

2.3. Eines principals: getfacl i setfacl

Instal·lació

# Debian/Ubuntu
sudo apt install acl

# Fedora/RHEL
sudo dnf install acl

# Arch/Manjaro
sudo pacman -S acl

Veure les ACL d’un fitxer

getfacl fitxer.txt

Exemple de sortida:

# file: fitxer.txt
# owner: ramon
# group: professors
user::rw-
user:alumne1:r--
group::r--
group:admins:rw-
mask::rw-
other::---

Establir permisos ACL

# 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.txt

ACL per defecte en directoris

Les 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.

2.4. La màscara (mask)

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.txt

Important: Si un usuari té rw- a la seva ACL, però la màscara és r--, el permís efectiu serà r--.

2.5. Còpia i restauració d’ACL

# Exportar les ACL d'un directori
getfacl -R /directori/ > acl_backup.txt

# Restaurar les ACL
setfacl --restore=acl_backup.txt

3. Resum d’ordres (referència ràpida)

# 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.txt

4. Referències

Versions d’aquest document

Domini Públic (CC0)