CodeGym /Corsi /Docker SELF /Gestione dei diritti di accesso con ACL (`setfacl`, `getf...

Gestione dei diritti di accesso con ACL (`setfacl`, `getfacl`)

Docker SELF
Livello 5 , Lezione 3
Disponibile

1. Introduzione alle ACL

Immagina di essere l'organizzatore di una festa (o l'amministratore di sistema). Vuoi che gli ospiti possano entrare in alcune stanze e in altre solo con il tuo permesso. I diritti di accesso di base in Linux rwx ti permettono di gestire l'accesso solo per tre categorie: il proprietario (user), il gruppo (group) e tutti gli altri (others). Ma cosa succede se vuoi dare accesso a una stanza solo a un amico speciale? Il guardiano del modello di diritti standard ti dirà: "Ehi, non funziona così". Ed è qui che entrano in scena le ACL pronte ad aiutarti.

Le ACL (Access Control Lists) risolvono il problema della limitazione del tradizionale sistema a tre livelli di diritti, permettendo di impostare i diritti di accesso per utenti e gruppi specifici.

Funzionalità principali delle ACL:

  1. Impostazione di diritti individuali su file e cartelle per utenti e gruppi specifici.
  2. Ereditarietà dei diritti per i nuovi file all'interno di una cartella.
  3. Configurazione più flessibile rispetto all'approccio tradizionale chmod.

2. Come sapere se ACL è attivo?

Prima di iniziare a gestire ACL, vediamo se sono supportati dal tuo sistema. Puoi verificarlo con il comando:

mount | grep acl

Se il file system è stato montato con l'opzione acl, sei pronto per lavorarci! Altrimenti, sarà necessario rimontare la partizione aggiungendo acl:

sudo mount -o remount,acl /your/mount/point

Tutto qui, ora sei pronto. È tempo di immergerci nella pratica.


3. Comandi principali per lavorare con ACL

Comando Descrizione
getfacl Ottenere la lista attuale di ACL per un file o una directory.
setfacl Impostare o modificare ACL per un file o una directory.
setfacl -m Modificare (modify) i permessi attuali.
setfacl -x Rimuovere (remove) permessi specifici.
setfacl -b Rimuovere tutte le voci ACL per un file o una directory.
setfacl -d Impostare permessi predefiniti per una directory, ereditati dai file.

Ora vediamo ogni comando con degli esempi pratici!


Ottenere gli ACL attuali getfacl

Supponiamo di avere un file example.txt. Vogliamo vedere i permessi attuali usando ACL. Basta un solo comando:

getfacl example.txt

L'output sarà simile a questo:

# file: example.txt
# owner: user1
# group: group1
user::rw-
group::r--
other::---

Questa lista mostra i permessi standard: il proprietario user1 può leggere e scrivere, il gruppo group1 può solo leggere, e gli altri utenti non hanno alcun accesso.


Impostare permessi individuali (setfacl)

Supponiamo ora che l'utente user2 abbia bisogno di permessi di scrittura sul file example.txt. Puoi farlo così:

sudo setfacl -m u:user2:rw example.txt

Il comando significa:

  • -m: modifica dei permessi.
  • u:user2:rw: aggiungere o cambiare i permessi per l'utente user2 (read-write).

Controlliamo il risultato:

getfacl example.txt

Ora l'output appare così:

# file: example.txt
# owner: user1
# group: group1
user::rw-
user:user2:rw  # Regola aggiuntiva!
group::r--
other::---

Rimuovere permessi individuali setfacl -x

Se decidi che l'utente user2 non deve più avere permessi di scrittura, puoi rimuoverli:

sudo setfacl -x u:user2 example.txt

Controlliamo:

getfacl example.txt

Non ci sono più regole aggiuntive per user2!


Impostare permessi per i gruppi

I permessi tramite ACL possono essere impostati non solo per singoli utenti, ma anche per interi gruppi. Ad esempio, per dare al gruppo devteam accesso in lettura e scrittura, esegui:

sudo setfacl -m g:devteam:rw example.txt

Impostare permessi predefiniti setfacl -d

Spesso è necessario impostare automaticamente i permessi per tutti i nuovi file e directory all'interno di una determinata directory. Ad esempio, vuoi che tutti i file nella directory project_dir abbiano permessi di scrittura per l'utente developer. In questo caso:

sudo setfacl -d -m u:developer:rw project_dir

Puoi controllare i permessi così:

getfacl project_dir

Ora per tutti i nuovi file e sottodirectory in project_dir verrà applicata questa regola per impostazione predefinita.


Rimuovere tutti gli ACL setfacl -b

Se vuoi eliminare completamente tutti gli ACL per un file:

sudo setfacl -b example.txt

Ora il file tornerà al modello standard di permessi user:group:others.


4. Uso pratico di ACL

Scenario: Collaborazione su un progetto

Supponiamo di avere un progetto salvato nella directory /project. Ci lavorano tre persone:

  • Alice deve avere pieno accesso (lettura, scrittura, esecuzione).
  • Bob deve solo leggere i file.
  • Eve non deve vedere la directory.

Configuriamo questo utilizzando gli ACL:

  1. Concedere a Alice pieno accesso:

    sudo setfacl -m u:alice:rwx /project
    
  2. Concedere a Bob solo l'accesso in lettura:

    sudo setfacl -m u:bob:r-- /project
    
  3. Per Eve non facciamo nulla — non avrà accesso per impostazione predefinita.

Vediamo la lista corrente di ACL:

getfacl /project

Risultato:

# file: /project
# owner: root
# group: root
user::rwx
user:alice:rwx
user:bob:r--
group::---
other::---

Ora Alice può lavorare senza restrizioni, Bob può solo visualizzare i file, e Eve rimane fuori.


5. Errori potenziali e le loro soluzioni

  1. Gli ACL non funzionano, anche se li hai configurati. Forse la partizione non è montata con l'opzione acl. Usa mount per controllare e rimonta se necessario.

  2. Conflitto tra i permessi standard e gli ACL. Gli ACL hanno sempre priorità sui permessi standard. Ad esempio, anche se per "others" è vietata la lettura, ACL può permettere l'accesso a un utente specifico.

  3. Ti dimentichi degli ACL ereditati. Se hai configurato i permessi -d (default), controlla se queste regole sono state ereditate dai nuovi file.

Perché è importante?

La gestione dei permessi tramite ACL ti permette di configurare in modo flessibile l'accesso per diversi utenti e gruppi. È particolarmente utile sui server di lavoro, dove è necessario distribuire i permessi tenendo conto dei ruoli. Ad esempio, nelle aziende gli ACL vengono usati per limitare l'accesso solo a chi "sa di cosa si tratta" — una delle chiavi per la sicurezza.

Puoi approfondire leggendo la guida ufficiale sugli ACL per capire meglio le loro potenzialità.

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION