ACL Linux: storia, concetti e uso pratico

Da GazziNet.
Versione del 20 mar 2026 alle 10:33 di Admin (discussione | contributi) (Fix rendering: sostituiti blocchi syntaxhighlight non supportati e ripristinato contenuto)
Vai alla navigazione Vai alla ricerca

Introduzione

Le ACL (Access Control List) in Linux estendono il modello classico dei permessi Unix e consentono un controllo accessi piu granulare.

Quando owner, group e others non bastano, le ACL permettono di assegnare regole specifiche a singoli utenti o gruppi mantenendo il principio del minimo privilegio.

Concetti base

Nel modello standard Unix hai tre classi di permessi:

  • proprietario
  • gruppo
  • altri

Con le ACL puoi aggiungere entry dedicate, ad esempio per dare accesso a un utente tecnico senza cambiare proprietario della risorsa.

Comandi principali:

  • getfacl per leggere ACL correnti
  • setfacl per creare/modificare/rimuovere ACL

Esempi pratici

Concedere permessi a un utente specifico

sudo setfacl -m u:deploy:rwx /srv/progetto/shared

Definire ACL di default su una directory

Le ACL di default vengono ereditate da nuovi file e directory creati al suo interno.

sudo setfacl -m d:u:deploy:rwx /srv/progetto/shared

Verificare ACL effettive

getfacl /srv/progetto/shared

Nota: la voce mask puo limitare i permessi realmente applicati.

Relazione con chmod

ACL e permessi tradizionali convivono. Dopo modifiche con chmod, e buona pratica controllare sempre il risultato con getfacl per verificare eventuali effetti sulla maschera ACL.

Quando usare le ACL

  • ambienti multiutente
  • directory condivise con esigenze di accesso diverse
  • casi in cui si vogliono evitare permessi eccessivamente ampi (es. 777)
  • sistemi in cui serve tracciare policy accessi piu rigorose

Storia delle ACL

Timeline essenziale:

  • Anni 60-70: concetti ACL gia presenti in sistemi multiutente storici
  • Anni 90: sviluppo delle estensioni sicurezza IEEE POSIX 1003.1e
  • Ottobre 1997: riferimento tecnico nella bozza POSIX.1e Draft 17
  • Gennaio 1998: standardizzazione POSIX.1e ritirata; il modello ACL continua comunque a essere implementato
  • Novembre 2002: supporto ACL POSIX incluso nel kernel Linux 2.5.46 (ramo di sviluppo)
  • Dal 2003 in poi: adozione ampia nei filesystem Linux usati in produzione

In sintesi, pur senza standard finale ratificato, le ACL sono diventate uno strumento consolidato nell'amministrazione Linux.

Buone pratiche

  • applicare ACL solo dove necessario
  • documentare le regole nei runbook operativi
  • verificare periodicamente configurazioni e ereditarieta
  • mantenere un approccio minimo privilegio

Approfondimento tecnico ACL Linux

Modello ACL POSIX: entry principali

Le ACL POSIX su file/directory usano tipicamente queste entry:

  • user:: permessi del proprietario
  • group:: permessi del gruppo proprietario
  • other:: permessi per tutti gli altri
  • user:nome_utente: eccezioni per singolo utente
  • group:nome_gruppo: eccezioni per gruppo specifico
  • mask:: limite massimo effettivo per group e named user/group
  • default:... ACL ereditarie (solo su directory)

Mask: il punto piu importante da capire

La mask limita i permessi effettivi di:

  • group::
  • tutte le entry user:... nominate
  • tutte le entry group:... nominate

Esempio: se una entry dice rwx ma la mask e r-x, il risultato effettivo e r-x.

setfacl -m m::rwx /percorso

ACL access vs ACL default

  • Access ACL: controlla accesso attuale al file/directory.
  • Default ACL: template ereditato da nuovi oggetti creati dentro una directory.
setfacl -m u:deploy:rwx /srv/shared
setfacl -m d:u:deploy:rwx /srv/shared

Interazione con chmod e umask

  • chmod puo modificare la mask ACL, cambiando i permessi effettivi.
  • umask influenza i permessi iniziali alla creazione; se esiste una default ACL, quest'ultima partecipa al risultato finale.

Verifica tecnica rapida

ls -l /percorso
getfacl /percorso
stat /percorso

Backup e ripristino ACL

getfacl -R /srv/shared > /root/acl-backup.txt
setfacl --restore=/root/acl-backup.txt

Operazioni utili avanzate

setfacl -b /percorso
setfacl -k /directory
setfacl -R -m u:deploy:rwX /srv/shared

Troubleshooting tipico

namei -om /percorso/file

Fonti