>_ Sistemi operativi e Linux

La struttura delle cartelle di Linux: a cosa servono /etc, /var e /usr

Guida alla gerarchia del filesystem Linux: cosa contengono /etc, /var, /usr, /home, /tmp, /proc e /dev, dove sono configurazioni e log, cosa non toccare.

Chi arriva da Windows cerca le lettere delle unità, C: e D:, e non le trova. Su Linux tutto parte da un'unica radice, /, e ogni disco, chiavetta o partizione viene «appeso» in qualche punto di questo albero. La disposizione delle cartelle segue una convenzione, il Filesystem Hierarchy Standard (FHS), rispettata a grandi linee da quasi tutte le distribuzioni. Conoscerla significa sapere dove cercare una configurazione, un log o un programma senza tirare a indovinare.

Una sola radice, molti punti di montaggio

Quando colleghi una chiavetta USB, il sistema la rende accessibile in una cartella, per esempio /media/anna/CHIAVETTA. Quella cartella si chiama punto di montaggio. Lo stesso vale per un secondo disco interno, che potrebbe essere montato in /data, o per una cartella di rete. Per l'utente è tutto un unico albero: è il kernel a sapere che sotto /data i file stanno fisicamente su un altro dispositivo.

Il comando findmnt o il più semplice df -h mostrano cosa è montato e dove.

Le cartelle principali

Cartella Contenuto
/etc file di configurazione del sistema
/home cartelle personali degli utenti
/root cartella personale dell'amministratore
/usr programmi, librerie e documentazione installati
/var dati variabili: log, cache, code di stampa, database
/tmp file temporanei, spesso svuotati al riavvio
/boot kernel e file necessari all'avvio
/dev file speciali che rappresentano i dispositivi
/proc e /sys finestre virtuali sullo stato del kernel
/opt software di terze parti installato come pacchetto unico
/mnt e /media punti di montaggio temporanei e per supporti rimovibili

/etc: dove vive la configurazione

Quasi tutta la configurazione del sistema è in /etc, in file di testo leggibili. Qualche esempio:

  • /etc/hostname contiene il nome della macchina;
  • /etc/hosts associa nomi a indirizzi IP prima ancora del DNS;
  • /etc/fstab elenca i filesystem da montare all'avvio;
  • /etc/passwd e /etc/group descrivono utenti e gruppi, mentre le password cifrate stanno in /etc/shadow, leggibile solo dall'amministratore;
  • le cartelle come /etc/ssh/ o /etc/nginx/ raccolgono la configurazione dei singoli servizi.

Poiché è tutto testo, una buona abitudine è fare una copia di un file prima di modificarlo, per esempio sudo cp /etc/fstab /etc/fstab.bak. Un errore in /etc/fstab può impedire l'avvio, e avere la versione precedente a portata di mano accorcia molto il recupero.

/usr: i programmi installati

Nonostante il nome ricordi «user», /usr contiene il software di sistema in sola lettura: /usr/bin gli eseguibili, /usr/lib le librerie, /usr/share documentazione, icone e dati condivisi. Su molte distribuzioni recenti /bin e /sbin sono semplici collegamenti a /usr/bin e /usr/sbin, una semplificazione chiamata «usr merge».

C'è poi /usr/local, riservata al software installato a mano dall'amministratore, al di fuori del gestore di pacchetti. Tenere separate le due cose evita che un aggiornamento sovrascriva un programma compilato in proprio e viceversa.

/var: ciò che cambia nel tempo

In /var finiscono i dati che crescono e variano durante il funzionamento:

  • /var/log contiene i registri di sistema e dei servizi;
  • /var/cache le cache, comprese quelle dei pacchetti scaricati;
  • /var/lib lo stato persistente dei programmi, per esempio i database di molti servizi;
  • /var/spool le code di lavori in attesa, come stampe e posta.

Quando un server esaurisce lo spazio su disco, /var è il primo posto da controllare: un log che cresce senza rotazione o una cache mai ripulita sono cause frequenti.

/home e i file nascosti

Ogni utente ha una cartella in /home. Dentro, oltre a Documenti e Scaricati, ci sono molti file e cartelle nascosti, con il nome che inizia con un punto: .bashrc per la shell, .config/ per le impostazioni dei programmi, .local/share/ per i loro dati, .cache/ per le cache. Quando un'applicazione si comporta in modo strano, rinominare la sua cartella in .config e riavviarla è spesso il modo più rapido per verificare se il problema sta nella configurazione dell'utente.

Tenere /home su una partizione separata permette di reinstallare il sistema senza toccare i dati personali.

/dev, /proc e /sys: file che non sono file

In /dev ogni dispositivo è rappresentato da un file: /dev/sda è il primo disco SATA o USB, /dev/nvme0n1 il primo SSD NVMe, /dev/null un pozzo senza fondo in cui scartare l'output indesiderato.

/proc e /sys non occupano spazio su disco: il kernel genera il loro contenuto al momento della lettura. cat /proc/cpuinfo descrive il processore, cat /proc/meminfo la memoria, e ogni processo ha una cartella /proc/PID con informazioni sul suo stato. Molti comandi di diagnostica, come ps e free, leggono proprio da qui.

Cosa non toccare

Alcune regole prudenti: non cancellare file in /usr, /boot o /var/lib per liberare spazio, perché appartengono ai pacchetti e al loro stato; non modificare a mano /etc/shadow; non scrivere direttamente su un file in /dev che rappresenta un disco, a meno di sapere esattamente cosa si sta facendo. Per liberare spazio esistono strumenti appositi, come la pulizia della cache del gestore di pacchetti e la rotazione dei log.

In sintesi

  • Linux ha un'unica radice /; dischi e chiavette vengono montati in cartelle dell'albero.
  • La configurazione sta in /etc, i programmi in /usr, i dati variabili e i log in /var.
  • /usr/local e /opt ospitano il software installato fuori dal gestore di pacchetti.
  • /proc e /sys sono generati dal kernel e mostrano lo stato del sistema in tempo reale.
  • Prima di modificare un file in /etc fanne una copia; non cancellare file di sistema per fare spazio.
MM
Marco Marzaduri

Marco Marzaduri si occupa di cybersecurity, informatica forense e sviluppo web. Laureato in informatica e in psicologia, unisce l'analisi tecnica alla comprensione del fattore umano.

Leggi anche