Skip to main content
  1. Lab-blue/

[TODO] Lab - Linux ACL (setfacl/getfacl) - equivalente DACL Windows

·5 mins
Alessio Barnini
Author
Alessio Barnini
Table of Contents

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 Windows

Confronto Windows vs Linux
#

Windows DACLLinux ACLComando
Proprietario (SID)Proprietario (UID)chown
DACL — lista delle ACEACL — lista delle ACEsetfacl
Leggi le ACELeggi le ACEgetfacl
ACE: Homer — Readuser:homer:r--setfacl -m u:homer:r file
ACE: Marge — Read & Executeuser:marge:r-xsetfacl -m u:marge:rx file
ACE: Bart — Modifyuser:bart:rwxsetfacl -m u:bart:rwx file
ACE: Everyone — Denyother::---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.3

Fase 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 homer mostra l'utente con il suo UID
  • 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.txt mostra homer come proprietario

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.txt mostra -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
  • Task 3.3 — Leggere la DACL completa con getfacl

    getfacl /tmp/report.txt

    Output 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
  • 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

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"
  • 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
#

OperazioneComando
Aggiungere ACEsetfacl -m u:utente:rwx file
Leggere DACLgetfacl file
Rimuovere ACE specificasetfacl -x u:utente file
Rimuovere tutte le ACEsetfacl -b file
ACE ereditata su directorysetfacl -m d:u:utente:rx dir
Permessi: r=read w=write x=executer-- / rw- / rwx / ---

Risorse
#

  • man setfacl — documentazione completa
  • man 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

Related