ACL Linux: storia, concetti e uso pratico: differenze tra le versioni

Da GazziNet.
Vai alla navigazione Vai alla ricerca
(Compatibilita wiki: sostituiti syntaxhighlight con blocchi pre)
Etichetta: Sostituito
(Fix rendering: sostituiti blocchi syntaxhighlight non supportati e ripristinato contenuto)
Riga 1: Riga 1:
null
== 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:
* <code>getfacl</code> per leggere ACL correnti
* <code>setfacl</code> per creare/modificare/rimuovere ACL
 
== Esempi pratici ==
 
=== Concedere permessi a un utente specifico ===
 
<pre>
sudo setfacl -m u:deploy:rwx /srv/progetto/shared
</pre>
 
=== Definire ACL di default su una directory ===
 
Le ACL di default vengono ereditate da nuovi file e directory creati al suo interno.
 
<pre>
sudo setfacl -m d:u:deploy:rwx /srv/progetto/shared
</pre>
 
=== Verificare ACL effettive ===
 
<pre>
getfacl /srv/progetto/shared
</pre>
 
Nota: la voce '''mask''' puo limitare i permessi realmente applicati.
 
== Relazione con chmod ==
 
ACL e permessi tradizionali convivono. Dopo modifiche con <code>chmod</code>, e buona pratica controllare sempre il risultato con <code>getfacl</code> 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. <code>777</code>)
* 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:
* <code>user::</code> permessi del proprietario
* <code>group::</code> permessi del gruppo proprietario
* <code>other::</code> permessi per tutti gli altri
* <code>user:nome_utente:</code> eccezioni per singolo utente
* <code>group:nome_gruppo:</code> eccezioni per gruppo specifico
* <code>mask::</code> limite massimo effettivo per group e named user/group
* <code>default:...</code> ACL ereditarie (solo su directory)
 
=== Mask: il punto piu importante da capire ===
 
La <code>mask</code> limita i permessi effettivi di:
* <code>group::</code>
* tutte le entry <code>user:...</code> nominate
* tutte le entry <code>group:...</code> nominate
 
Esempio: se una entry dice <code>rwx</code> ma la mask e <code>r-x</code>, il risultato effettivo e <code>r-x</code>.
 
<pre>
setfacl -m m::rwx /percorso
</pre>
 
=== ACL access vs ACL default ===
 
* '''Access ACL''': controlla accesso attuale al file/directory.
* '''Default ACL''': template ereditato da nuovi oggetti creati dentro una directory.
 
<pre>
setfacl -m u:deploy:rwx /srv/shared
setfacl -m d:u:deploy:rwx /srv/shared
</pre>
 
=== Interazione con chmod e umask ===
 
* <code>chmod</code> puo modificare la mask ACL, cambiando i permessi effettivi.
* <code>umask</code> influenza i permessi iniziali alla creazione; se esiste una default ACL, quest'ultima partecipa al risultato finale.
 
=== Verifica tecnica rapida ===
 
<pre>
ls -l /percorso
getfacl /percorso
stat /percorso
</pre>
 
=== Backup e ripristino ACL ===
 
<pre>
getfacl -R /srv/shared > /root/acl-backup.txt
setfacl --restore=/root/acl-backup.txt
</pre>
 
=== Operazioni utili avanzate ===
 
<pre>
setfacl -b /percorso
setfacl -k /directory
setfacl -R -m u:deploy:rwX /srv/shared
</pre>
 
=== Troubleshooting tipico ===
 
<pre>
namei -om /percorso/file
</pre>
 
== Fonti ==
 
* [https://man7.org/linux/man-pages/man5/acl.5.html man page acl(5)]
* [https://atc.usenix.org/legacy/events/usenix03/tech/freenix03/full_papers/gruenbacher/gruenbacher_html/index.html USENIX 2003 - POSIX ACLs on Linux]

Versione delle 10:33, 20 mar 2026

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