Capitolo successivo Capitolo precedente Indice

30. Gerarchia del filesystem

La struttura dei filesystem di ogni sistema operativo Unix è diversa da quella degli altri. Spesso, per mantenere la compatibilità con altri ambienti si utilizzano dei link simbolici. Con essi si può simulare la presenza di directory e file che in realtà non esistono dove si vuole fare sembrare che siano. La tecnica dell'uso di link simbolici può essere usata anche per personalizzare in qualche modo la struttura del proprio filesystem, facendo in modo però che i programmi normali continuino a trovare quello che serve loro, dove si aspettano che sia.

30.1 Organizzazione di una gerarchia

Quando si organizza un filesystem è importante distinguere tra diversi tipi di file:

Ciò che è statico, può essere reso accessibile in sola lettura (esecuzione compresa), mentre il resto deve necessariamente essere accessibile anche in scrittura. Ciò che è condivisibile può essere utilizzato da più computer contemporaneamente, il resto no. Ciò che è indispensabile per l'avviamento del computer, non può, o non dovrebbe, essere collocato in filesystem remoti.

Purtroppo non è sempre detto che la distinzione sia sempre netta.

30.2 Filesystem standard

Nelle sezioni seguenti viene descritta la struttura essenziale di un filesystem Linux, secondo la struttura stabilita dal FSSTND (Filesystem Standard). Per maggiori dettagli si può consultare l'indirizzo http://www.pathname.com/fhs.

/ - la radice

La directory radice è quella che contiene tutte le altre. Di solito contiene solo directory con l'unica eccezione del file del kernel che può risiedere qui o in /boot/.

/bin/ - /sbin/

La directory /bin/ contiene gli eseguibili di uso comune più importante. I file al suo interno sono generalmente accessibili in esecuzione a tutti gli utenti.

La directory /sbin/ contiene gli eseguibili che dovrebbero essere utilizzati solo dall'utente root. Utilizzando una directory diversa da /bin/ diventa più facile controllare i permessi di accesso ed esecuzione di questi file.

/boot/

La directory /boot/ contiene i file utilizzati da LILO per predisporre il caricamento del sistema operativo (boot). In particolare può contenere il kernel quando questo non si trova nella directory radice.

/dev/

La directory /dev/ contiene una lunga serie di file di dispositivo. Perché i vari componenti fisici del computer possano funzionare, occorre che per ognuno di essi sia stato previsto il relativo file di dispositivo, in questa directory. In pratica, è come se si trattasse di driver di dispositivo. Spesso, quando si vuole utilizzare un nome predefinito per un dispositivo, si utilizza un link simbolico.

Regolando opportunamente i permessi di questi file si controlla l'utilizzo diretto delle unità fisiche da parte degli utenti.

/etc/

La directory /etc/ contiene una lunga serie di file di configurazione che riguardano l'intero sistema.

/etc/X11/

Contiene la configurazione per X Window System.

/etc/skel/

Contiene le configurazioni di partenza per i nuovi utenti.

/etc/rc.d/

Questa directory, o altra simile, contiene i file utilizzati dalla procedura di inizializzazione del sistema (stile System V).

/home/

La directory /home/ è normalmente il punto di partenza per tutte le directory home degli utenti. Se il sistema viene utilizzato da molti utenti, può essere conveniente (e a volte addirittura necessario) dirottare il contenuto di questa directory in un altro disco e di conseguenza in un filesystem secondario montato in questo punto.

/lib/

La directory /lib/ è il contenitore dei file di libreria (library) necessari per i programmi di uso generale. Di solito si trovano qui le librerie necessarie agli eseguibili che possono trovarsi in /bin/ e /sbin/. Le librerie che riguardano solo programmi collocati al di sotto di /usr/, non appartengono a questa directory.

/lib/modules/

Contiene la parte modulare del kernel.

/mnt/

La directory /mnt/ è normalmente vuota e serve come punto di collegamento generico per un altro filesystem. Quando si utilizzano sistematicamente alcune unità a disco come CD-ROM, dischetti o altre unità rimovibili, si creano solitamente delle directory apposite discendenti da /mnt/, come /mnt/cdrom/, /mnt/floppy/ e simili per potervi montare i relativi dischi e accedevi.

/proc/

La directory /proc/ è una directory vuota utilizzata per montare il così detto filesystem /proc. I file (e le directory) contenuti in questo filesystem virtuale sono indispensabili ai programmi che hanno la necessità di accedere alle informazioni sul sistema.

<!>   Quando si esegue una copia di sicurezza di tutto il filesystem (backup), questa directory non deve essere copiata. Basterà ricrearla vuota al momento del recupero.

/root/

La directory /root/ è la directory home dell'utente root. Ci sono molti validi motivi per evitare di mescolarla insieme a quelle degli utenti normali. Vale la pena di tenere presente che così facendo è possibile impedire gli accessi più facilmente ed è opportuno che questa sia collocata nel filesystem root. Comunque, questa collocazione è considerata facoltativa.

/tmp/

La directory /tmp/ è destinata a contenere file provvisori e potrebbe essere anche collocata in un disco virtuale basato su memoria volatile (RAM disk).

Non sempre i programmi che creano dei file provvisori in questa directory, provvedono poi anche alla loro eliminazione. Se la directory è stata collocata in un disco normale, di tanto in tanto, conviene darci una occhiata e poi procedere ad eliminare tutto quello che non serve.

Volendo è possibile anche inserire in uno script di quelli utilizzati dalla procedura di inizializzazione un'istruzione di eliminazione di tutti i file contenuti in questa directory, in modo che a ogni avviamento del sistema, questa, venga ripulita.

Data la sua natura, quando si fanno delle copie di sicurezza del filesystem, non è il caso di copiare il contenuto di questa directory.

/usr/

La directory /usr/ è molto importante e si scompone in una struttura molto articolata. Può essere collocata (teoricamente) in una unità in sola lettura.

/usr/X11R6/

Contiene X Window System.

/usr/bin/

Contiene eseguibili di uso comune di minore importanza rispetto a quelli contenuti in /bin/.

/usr/doc/

Contiene documentazione relativa ai programmi installati.

/usr/etc/

Si tratta di una directory con gli stessi scopi di /etc/, utilizzata dai programmi collocati al di sotto di /usr/. In un sistema Linux ordinato, questa dovrebbe essere vuota o al massimo contenere link simbolici a file collocati all'interno di /etc/. Diversamente, si renderebbe vano l'intento di rendere accessibile in sola lettura quanto discende da /usr/.

/usr/include/

Raccoglie i file include, cioè quelli utilizzati come segmenti standard di sorgenti per i programmi. In pratica, sono quei file che di solito terminano con un'estensione .h e vengono inglobati automaticamente in un sorgente attraverso le istruzioni #INCLUDE <file>.

Non tutti i file di questo tipo sono inseriti direttamente in questa directory o in una sua discendente, ma in un sistema ordinato, tutti i file include sono raggiungibili da qui, almeno attraverso link simbolici.

/usr/info/

Raccoglie i file ``info'' dei programmi installati a partire da /usr/. Si tratta di file di documentazione generati attraverso makeinfo e generalmente compressi attraverso gzip.

/usr/lib/

Contiene i file di libreria necessari per i programmi installati a partire da /usr/. Il concetto di libreria, viene qui inteso in un senso più ampio di quello utilizzato da /lib/. Infatti, oltre ai file di libreria veri e propri si possono trovare altri file semplicemente accessori agli eseguibili.

/usr/local/

Questa directory si articola in modo vario a seconda di cosa si è installato. Di solito contiene le solite directory bin, doc, etc, include, info, lib, man, sbin, share, src. Ma queste possono anche essere semplicemente vuote, specialmente dopo la prima installazione di Linux.

/usr/local/ potrebbe essere usato come directory di collegamento per un altro filesystem specifico per l'ambito locale. In pratica, quanto contenuto in /usr/ potrebbe essere condiviso da diversi computer, mentre /usr/local/ potrebbe essere la particolarità di ogni computer, o di un gruppo più piccolo.

/usr/man/

Contiene file di manuale, ovvero la documentazione interna leggibile attraverso il programma man.

/usr/openwin/

Contiene gli eseguibili e le librerie del gestore di finestre OpenLook.

/usr/sbin/

Contiene eseguibili riservati all'utente root, di minore importanza rispetto a quelli contenuti in /sbin/.

/usr/share/

Contiene file di informazioni condivise di uso vario.

/usr/src/

È il punto a partire dal quale conviene collocare i sorgenti dei programmi che si vogliono tenere a disposizione. In particolare, è importante /usr/src/linux/ utilizzata per contenere i sorgenti necessari a ricostruire il kernel.

La directory /usr/src/linux/ è molto importante anche per altri sorgenti da compilare perché molti file include, utilizzati anche da altri programmi, sono collocati fisicamente al suo interno. Se si utilizzano diverse versioni di sorgenti per il kernel, è necessario almeno creare un link simbolico che permetta di raggiungere la versione prescelta utilizzando il percorso /usr/src/linux/.

/var/

La directory /var/ contiene altre directory e file di uso vario che contengono dati variabili. Questo significa anche che qui c'è un po' di tutto, ma si tratta di tutto quello che non può essere contenuto in /usr/ perché quest'ultima directory deve poter essere accessibile in sola lettura.

/var/X11R6/

Contiene altri file utilizzati dal sistema X Window System.

/var/catman/

È una directory opzionale utilizzata per conservare temporaneamente i file di manuale già formattati.

/var/lib/

Contiene file di informazioni sullo stato delle applicazioni.

In particolare, la distribuzione RedHat utilizza la directory /var/lib/rpm/ per contenere i file del database dei pacchetti installati.

/var/lock/

I file lock, cioè quelli che servono a indicare che una certa risorsa è impegnata, dovrebbero essere collocati tutti in questa directory.

/var/log/

Contiene i file di log: sia quelli utilizzati dal log di sistema, sia quelli di altri programmi.

/var/run/

Contiene in particolare informazioni sul PID di alcuni eseguibili in funzione e il file utmp dal quale si conosce quali sono gli utenti attualmente connessi.

/var/spool/

Questa directory è molto importante per tutti i programmi che hanno la necessità di gestire code di elaborazioni. In particolare sono collocate sotto questa directory le code di stampa, della posta e di altri gestori di servizi.

/var/tmp/

È una directory temporanea il cui contenuto dovrebbe rimanere a disposizione più a lungo rispetto a quello di /tmp/.

 

1997.10.26 - Scritto da Daniele Giacomini   daniele@calion.com   (vedi copyright: Appunti Linux).


Capitolo successivo Capitolo precedente Indice