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:
- Impostazione di diritti individuali su file e cartelle per utenti e gruppi specifici.
- Ereditarietà dei diritti per i nuovi file all'interno di una cartella.
- 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'utenteuser2
(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:
Concedere a
Alice
pieno accesso:sudo setfacl -m u:alice:rwx /project
Concedere a
Bob
solo l'accesso in lettura:sudo setfacl -m u:bob:r-- /project
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
Gli ACL non funzionano, anche se li hai configurati. Forse la partizione non è montata con l'opzione
acl
. Usamount
per controllare e rimonta se necessario.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.
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à.
GO TO FULL VERSION