Cosa fa#
Dimostra che setfacl/getfacl su Linux e' l'equivalente esatto della DACL Windows — permette di assegnare permessi diversi per ogni singolo utente su un file, esattamente come le ACE in Windows.
TL;DR#
chmod → 3 categorie fisse (owner/group/others) = DAC base
setfacl → ACE per ogni utente = DACL Windows
getfacl → mostra la lista completa delle ACE = Properties > Security in WindowsConfronto Windows vs Linux#
| Windows DACL | Linux ACL | Comando |
|---|---|---|
| Proprietario (SID) | Proprietario (UID) | chown |
| DACL — lista delle ACE | ACL — lista delle ACE | setfacl |
| Leggi le ACE | Leggi le ACE | getfacl |
| ACE: Homer — Read | user:homer:r-- | setfacl -m u:homer:r file |
| ACE: Marge — Read & Execute | user:marge:r-x | setfacl -m u:marge:rx file |
| ACE: Bart — Modify | user:bart:rwx | setfacl -m u:bart:rwx file |
| ACE: Everyone — Deny | other::--- | chmod o-rwx file |
Valore curriculum#
"Ho implementato DAC con ACL Linux (setfacl/getfacl) su Ubuntu, replicando il modello DACL/ACE di Windows NTFS con permessi granulari per singolo utente."
Ambiente#
Ubuntu Server ARM — 192.168.64.3Fase 1 — Preparare gli utenti#
Task 1.1 — Creare utenti di test
sudo useradd -m homer sudo useradd -m marge sudo useradd -m bart sudo useradd -m lisa- Come sai che hai finito:
id homermostra l'utente con il suo UID
- Come sai che hai finito:
Task 1.2 — Creare il file di test
echo "dati riservati" > /tmp/report.txt sudo chown homer /tmp/report.txt- Come sai che hai finito:
ls -l /tmp/report.txtmostrahomercome proprietario
- Come sai che hai finito:
Fase 2 — chmod base (3 categorie fisse)#
Task 2.1 — Impostare permessi base
chmod 700 /tmp/report.txt- Solo homer (owner) può leggere/scrivere/eseguire
- group e others: nessun accesso
- Come sai che hai finito:
ls -l /tmp/report.txtmostra-rwx------
Task 2.2 — Verificare il limite di chmod
- Prova a dare a Marge accesso in sola lettura SENZA dare accesso a tutti gli others
- Con chmod puro non puoi — dovresti usare i gruppi o le ACL
- Come sai che hai finito: hai capito il limite delle 3 categorie fisse
Fase 3 — setfacl (ACL — equivalente DACL Windows)#
Task 3.1 — Verificare che il filesystem supporti ACL
mount | grep acl # oppure tune2fs -l /dev/sda1 | grep "Default mount"- Su Ubuntu moderno le ACL sono abilitate di default su ext4
Task 3.2 — Aggiungere ACE per ogni utente
# ACE: Marge — Read (r--) sudo setfacl -m u:marge:r /tmp/report.txt # ACE: Bart — Read + Write (rw-) sudo setfacl -m u:bart:rw /tmp/report.txt # ACE: Lisa — nessun accesso (---) sudo setfacl -m u:lisa:--- /tmp/report.txt- Flag:
-m= modify — aggiunge o modifica una ACE
- Flag:
Task 3.3 — Leggere la DACL completa con getfacl
getfacl /tmp/report.txtOutput atteso:
# file: tmp/report.txt # owner: homer # group: homer user::rwx ← owner (homer) — Full Control user:marge:r-- ← ACE: Marge — Read user:bart:rw- ← ACE: Bart — Read + Write user:lisa:--- ← ACE: Lisa — Deny group::--- mask::rw- other::---- Come sai che hai finito: vedi le ACE per ogni utente separatamente
Task 3.4 — Verificare i permessi con sudo -u
sudo -u marge cat /tmp/report.txt # deve funzionare (Read) sudo -u bart cat /tmp/report.txt # deve funzionare (Read + Write) sudo -u lisa cat /tmp/report.txt # deve fallire (Deny)- Come sai che hai finito: marge e bart leggono, lisa riceve "Permission denied"
Fase 4 — Rimuovere una ACE (equivalente rimozione ACE in Windows)#
Task 4.1 — Rimuovere il permesso di Bart
sudo setfacl -x u:bart /tmp/report.txt- Flag:
-x= remove — rimuove una ACE specifica
- Flag:
Task 4.2 — Verificare la rimozione
getfacl /tmp/report.txt sudo -u bart cat /tmp/report.txt # ora deve fallire- Come sai che hai finito: Bart non compare piu' nella DACL e riceve Permission denied
Task 4.3 — Rimuovere tutte le ACL (torna a chmod puro)
sudo setfacl -b /tmp/report.txt- Flag:
-b= remove all — rimuove tutte le ACE, torna ai permessi chmod standard
- Flag:
Fase 5 — ACL su directory (equivalente inheritance Windows)#
Task 5.1 — Creare una directory con ACL default
mkdir /tmp/progetto sudo setfacl -m d:u:marge:rx /tmp/progetto- Il prefisso
d:= default — tutti i nuovi file creati dentro erediteranno questa ACE - Equivalente Windows: checkbox "Apply to subfolders and files"
- Il prefisso
Task 5.2 — Verificare l'ereditarieta'
touch /tmp/progetto/nuovo-file.txt getfacl /tmp/progetto/nuovo-file.txt- Come sai che hai finito: nuovo-file.txt ha gia' l'ACE di Marge senza averla impostata manualmente
Scenario Reale#
Il SOC riceve una segnalazione: un file con dati sensibili di un progetto e' accessibile da utenti non autorizzati. Con getfacl l'analista verifica la DACL in 5 secondi — vede che un account di servizio ha ancora rwx sul file dopo la fine del progetto (privilege creep). Con setfacl -x rimuove l'accesso e documenta l'azione nel ticket. Su Windows il processo equivalente e' Properties → Security → Edit → Remove.
Cheat Sheet rapido#
| Operazione | Comando |
|---|---|
| Aggiungere ACE | setfacl -m u:utente:rwx file |
| Leggere DACL | getfacl file |
| Rimuovere ACE specifica | setfacl -x u:utente file |
| Rimuovere tutte le ACE | setfacl -b file |
| ACE ereditata su directory | setfacl -m d:u:utente:rx dir |
| Permessi: r=read w=write x=execute | r-- / rw- / rwx / --- |
Risorse#
man setfacl— documentazione completaman getfacl— come leggere l'output
Collegato a#
- cap-02-identity-access-management-(IAM) — sezione DAC con confronto Windows/Linux
- [[[TODO] lab-active-directory-sso-kerberos|lab-active-directory-sso-kerberos]] — lab correlato su AD e permessi Windows


