GNU/Linux: cosa c’è nelle cartelle di Linux

Quando apri un terminale e ti sposti nella radice del filesystem, trovi una serie di cartelle che sembrano messe lì a caso. Non lo sono: l’organizzazione segue uno standard (il Filesystem Hierarchy Standard) e ogni cartella ha un ruolo preciso. In questo articolo facciamo il giro di tutte, in ordine alfabetico, così quando andrai a passeggiare nel sistema saprai dove stai mettendo i piedi.

Partiamo dalla radice

Ci portiamo nella cartella radice e facciamo un ls con l’opzione -1, così le cartelle escono una sotto l’altra e si leggono meglio:

cd /
ls -1

Il risultato dipende dalla distribuzione, ma più o meno trovi: bin, boot, dev, etc, home, lib, lost+found, media, mnt, opt, proc, root, run, sbin, srv, sys, tmp, usr, var.

Le cartelle fondamentali

  • bin: gli eseguibili fondamentali del sistema, i comandi di base. Deve stare sullo stesso filesystem della radice, perché questi comandi devono essere disponibili anche in caso di avvio di emergenza.
  • boot: le immagini del kernel e i file del bootloader, cioè il software che si occupa di avviare il sistema. A volte vive in una partizione a parte. È una cartella critica: non ci si mettono le zampe se non si sa cosa si sta facendo.
  • dev: il contenitore di tutte le periferiche, fisiche e logiche. Linux gestisce gli apparati collegati come se fossero file: qui dentro trovi i dischi fissi, i terminali a caratteri e così via. La ritroveremo spesso, ma normalmente non ci si lavora a mano.
  • etc: tutti i file di configurazione del sistema e dei software installati. Da amministratore ci lavorerai di continuo. Qui c’è anche /etc/passwd, l’elenco degli utenti: il Santo Graal degli hacker, perché la prima cosa che si cerca di fare per impadronirsi di un sistema è scaricare il file delle password.
  • home: le home directory degli utenti, cioè la cartella dove l’utente si ritrova quando fa login e dove tiene file e documenti. Può stare su un filesystem separato, perché in caso di emergenza i file degli utenti non sono fondamentali.
  • lib (e lib64): le librerie, l’equivalente Linux delle DLL di Windows, necessarie all’esecuzione dei comandi contenuti in bin e sbin. Anche queste devono stare sul disco di base.
  • lost+found: la cartella che potrebbe salvarti da un disastro. Dopo un controllo disco o un ripristino del filesystem, i dati corrotti che il sistema non riesce a ricollocare finiscono qui, e li puoi esaminare a mano per salvare il salvabile.
  • media: dove il sistema crea, in automatico, le sottocartelle temporanee per agganciare dispositivi come chiavette USB e dischi esterni. Quando colleghi una chiavetta, i suoi dati li trovi qui.
  • mnt: una cartella con una ragion d’essere soprattutto storica. Serve per montare a mano filesystem temporanei: se si rompe un server, stacchi il disco, lo colleghi a un altro server e lo monti in /mnt, per avere un punto preciso dove lavorarci sopra. Oggi si usa meno, ma si può usare ancora così.
  • opt: software opzionale, che non rispetta la gerarchia standard del filesystem. Spesso ci finiscono i programmi proprietari. Può stare su un’altra partizione, perché non è indispensabile per l’avvio di emergenza.
  • proc: una cartella molto particolare, come dev. Contiene file speciali: è la finestra sul funzionamento del sistema, con i file dei processi e le impostazioni del kernel. Nel 99% dei casi non ci metti le mani, ma a volte è utilissimo (o vitale) poterci accedere.
  • root: la home directory dell’utente root, quello che ha potere di vita e di morte sulla macchina. Sta direttamente sul filesystem principale e non dentro /home, perché in caso di emergenza ci possono essere strumenti e informazioni necessari al ripristino.
  • run: le informazioni di lavoro dei processi in esecuzione, per esempio il loro identificativo (PID). È gestita in automatico dal sistema.
  • sbin: gli eseguibili di sistema, necessari anche loro all’avvio di emergenza. La differenza con bin: i comandi in sbin sono normalmente usati solo dall’utente root, quelli in bin possono essere lanciati anche da utenti non privilegiati.
  • srv: i file e le informazioni forniti dai servizi di sistema. Ci sono diverse scuole di pensiero: c’è chi ci mette i dati erogati al pubblico (per esempio i file di un server FTP o web) e chi preferisce /var. È una questione di stile di gestione.
  • sys: una cartella di lavoro del kernel, di fatto un’interfaccia per alcune sue informazioni, con usi molto specifici che vedremo nei video dedicati.
  • tmp: i file temporanei. Ha una politica di svuotamento: di solito applicazioni e utenti ci creano file di servizio, e ogni tanto viene svuotata per non intasare il sistema.
  • usr: contiene le sottocartelle /usr/bin e /usr/sbin, con i comandi meno vitali rispetto a quelli di /bin e /sbin (che possono non essere disponibili in emergenza). Qui viene installata la maggior parte dei software aggiuntivi: è l’equivalente della cartella Programmi di Windows.
  • var: tutti i file che cambiano nel tempo e che tendono a crescere. Per questo è prassi comune montarla su una partizione a parte, perché non intasi il sistema.

La cartella var nel dettaglio

Quali file crescono in un sistema Linux? Tantissimi. I log, per esempio: registrano gli eventi di sistema, quindi per definizione aumentano. E alcuni servizi ci mettono i loro dati:

  • Apache, il server web, usa /var/www/html per i file HTML che fornisce agli utenti web;
  • MySQL tiene i database in /var/lib/mysql.

Se non usi /srv per questo tipo di file, anche loro diventano facilmente molto grandi e molto numerosi: ecco perché è importante tenerli da parte. Il sistema ha bisogno di spazio sul disco per funzionare: se il disco arriva al 100% possono esserci grossi problemi. Per qualche consiglio su cosa svuotare e come, ti rimando al video sulla pulizia del filesystem.

Per curiosità, puoi verificare tu stesso quali di queste cartelle stanno su filesystem separati:

df -h / /boot /home /var /tmp

Conclusione

Ogni cartella avrebbe le sue sottocartelle e sotto-sottocartelle, ma qui volevo darti l’infarinatura generale. I dettagli li vedremo caso per caso: quando installeremo un server web ti spiegherò /etc/apache2, la cartella di configurazione di Apache, e /var/www/html, dove normalmente stanno i siti.

Nel frattempo apri la tua Linux box ed esplora il sistema. Ora hai più informazioni per evitare di fare danni: vai a passeggiare fra le cartelle.

Link e risorse

Sostieni il canale

PER SOSTENERE IL CANALE BASTANO UN LIKE E UN’ISCRIZIONE!

questi link sono affiliati Amazon, acquistando i libri che ti consiglio sostieni il canale!