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

Gestione dei diritti di accesso con ACL setfacl, getfacl

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