Skip to main content
  1. Concetti/

Linux Filesystem Hierarchy

·4 mins
Alessio Barnini
Author
Alessio Barnini
Table of Contents

#

Cosa fa
#

Lo standard (FHS - Filesystem Hierarchy Standard) che definisce la posizione e il contenuto delle directory principali in un sistema Linux. Tutto parte dalla "radice" rappresentata dal simbolo /.

[ / ] (Root)
     ┌─────┴─────┬─────────────┬─────────────┬─────────────┐
  [/bin]      [/etc]        [/proc]       [/var]        [/home]
 (Binari)    (Config)      (Kernel/      (Dati         (Utenti)
  Essenziali  Testo)        Processi)     Variabili)                                             │             └─ [/user]
                                       ┌─────┴─────┐
                                  [/var/log]  [/var/mail]
                                   (Log di 
                                    Sistema)

Nel Dettaglio
#

[ / ]  <-- LA RADICE (ROOT)
"Il punto di inizio di tutto"
  ┌──────┴──────┬─────────────┬─────────────┬─────────────┐
  │             │             │             │             │
[ /bin ]      [ /etc ]      [ /home ]     [ /var ]      [ /root ]
(Binari)     (Config)      (Utenti)      (Variabili)   (Casa di Root)
  │             │             │             │             │
  │             │             │             │             └─ Solo l'admin
  │             │             │             │                può entrare qui.
  │             │             │             │
  │             │             │             └─ [ /var/log ]
  │             │             │                Qui il sistema scrive i
  │             │             │                "diari" (log) di ciò che
  │             │             │                succede.
  │             │             │
  │             │             └─ [ /home/mario ]
  │             │                Ogni utente ha la sua "stanza"
  │             │                personale qui.
  │             │
  │             └─ Qui ci sono i "manuali di istruzioni" 
  │                per i programmi (file di testo).
  └─ Comandi base che servono 
     a far partire il computer 
     (es. ls, cp, mv).

I 3 Pilastri per chi inizia:
#

  • /etc (Editable Text Configuration): Pensa a questa cartella come alla "centrale di controllo". Se vuoi cambiare il nome del computer o impostare la password del Wi-Fi tramite file, cercherai qui dentro. ⚙️
  • /home: È l'unica zona dove un utente normale può creare file, scaricare musica o salvare documenti senza permessi speciali.
  • /var/log: Se qualcosa non funziona, questo è il primo posto dove guardare. Contiene i registri delle attività del sistema.
[ HARDWARE ] (CPU, RAM, Disco)
    ┌──────────────────────┐
    │       KERNEL         │ <─── Il "Vigile" (gestisce /proc e /sys)
    └──────────┬───────────┘
             [ / ] (ROOT)
      ┌────────┼────────┬────────────────┬──────────────┐
      │        │        │                │              │
  [ /boot ] [ /root ] [ /usr ]         [ /home ]      [ /var ]
  (Kernel   (Casa di  (Programmi       (Inquilini)    (Registri)
   files)    Root)     Condivisi)        │              │
      │        │        │                ├─ [ /mario ]  └─ [ /log ]
      │        └─ [🔒]  ├─ [ /bin ]      └─ [ /anna  ]     (Qui vedi chi
      │                 └─ [ /lib ]         (Ognuno ha      ha installato
      │                                      i suoi file)   i programmi)
      │                                         │
      └─ [ /vmlinuz ] <─── Il file del          └─ [🔒] (Anna non entra da Mario)
                           Kernel fisico

Come funziona
#

Mappa delle Directory Principali
#

Directory / FileSignificato MnemotecnicoDescrizione e Contenuto Critico
/RootLa radice. Tutto inizia da qui.
/binBinariesProgrammi eseguibili pronti all'uso essenziali per il boot (es. ls, cat).
/bootBootKernel Linux e configurazione del bootloader (GRUB).
/devDevices"Everything is a file": l'hardware è rappresentato qui (es. /dev/sda).
/etcEditable Text ConfigurationFile di configurazione globale del sistema in formato testo.
/etc/passwdPasswd DatabaseDatabase degli account utente (UID, GID, Home, Shell).
/etc/shadowShadow PasswordsContiene gli hash protetti delle password (solo root può leggerlo).
/etc/groupGroup DatabaseDefinizione dei gruppi e dei loro membri.
/etc/sudoersSudoers ClubConfigura chi può agire come Root tramite il comando sudo.
/homeHomeDirectory personali ("stanze") degli utenti comuni.
/libLibrariesLibrerie condivise (DLL di Linux) per i binari di sistema.
/mediaMediaMount automatico per USB, CD-ROM e media rimovibili.
/mntMountPunto di mount manuale usato dagli amministratori.
/optOptionalSoftware commerciale o pacchetti installati manualmente.
/procProcessesFile system virtuale con info su Kernel e processi (es. /proc/cpuinfo).
/rootRoot HomeLa "stanza" privata dell'amministratore (UID 0).
/runRuntimeDati volatili di esecuzione (socket, PID) memorizzati in RAM.
/sbinSystem BinariesComandi vitali riservati al superuser (es. fdisk, iptables).
/sysSystemInterfaccia moderna per info su hardware, driver e kernel.
/tmpTemporaryFile temporanei; spesso svuotata al riavvio.
/usrUser System ResourcesRisorse di sistema per l'utente (programmi, documentazione).
/usr/binUser BinariesBinari dei programmi installati dalla distribuzione (es. nmap).
/varVariableDati che variano nel tempo (database, code di stampa, mail).
/var/logVariable Log"Scatola nera" del sistema: registra ogni attività e errore.

Perché è importante per Blue Team
#

La conoscenza della gerarchia è la base per il Threat Hunting:

  1. Analisi Log: Identificare immediatamente /var/log/auth.log per tentativi di Brute Force.
  2. Persistence Detection: Monitorare directory scrivibili come /tmp o /dev/shm (RAM disk) dove gli attaccanti spesso caricano malware per evitare il rilevamento su disco fisso.
  3. Privilege Escalation: Verificare i permessi su file sensibili in /etc/shadow o binari SUID in /usr/bin.

Dove l'ho incontrato
#

  • bandit-00 — navigazione base e scoperta della posizione dei file.
  • junior-security-analyst-intro — introduzione alla struttura dei sistemi operativi.

Scenario Reale
#

Durante l'analisi di un server compromesso, noti una connessione di rete sospetta. Controllando in /proc/[PID]/exe (dove [PID] è l'ID del processo sospetto), riesci a trovare il percorso reale del binario malevolo, scoprendo che l'attaccante lo aveva nascosto rinominandolo come un file di sistema in /tmp/.hidden_malware.

Collegato a
#

  • system — categoria
  • file — categoria
  • permissions — per la gestione degli accessi alle directory
  • log — riferimento a /var/log

Related