Red Hat è fedele al Filesystem Hierarchy Standard (FHS), documento che definisce i nomi e la posizione di molti file e directory. Continueremo a seguire lo standard perché Red Hat Linux sia conforme all'FHS.
L'FHS corrente è il documento di riferimento per qualsiasi filesystem conforme all'FHS, ma lo standard lascia molte zone indefinite ed estensibili. In questa sezione viene fornita una panoramica sullo standard e una descrizione delle parti del filsystem non coperte dallo standard.
Lo standard completo è disponibile all'indirizzo:
La conformità con lo standard è molto importante, ma i due fattori fondamentali sono la compatibilità con altri sistemi conformi e la capacità di montare una partizione /usr come partizione in sola lettura perché contiene file eseguibili comuni e non va modificata dagli utenti. Poiché /usr è in sola lettura, può essere montata dal CD-ROM o da un'altra macchina tramite NFS in sola lettura.
Le directory e i file qui menzionati rappresentano un piccolo sottoinsieme di quelli specificati dal documento FHS. Per informazioni più dettagliate, consultate l'ultimo documento dell'FHS.
La directory /dev contiene voci del filesystem che rappresentano dispositivi collegati al sistema. Questi file sono essenziali perché il sistema funzioni correttamente.
La directory /etc è riservata ai file locali di configurazione presenti sul vostro computer. Nessun file binario deve essere inserito in /etc. Tutti i file binari che sono stati precedentemente inseriti in /etc devono essere trasferiti in /sbin oppure in /bin.
Le directory X11 e skel sono sottodirectory di /etc:
/etc |- X11/ |- skel/ |
La directory X11 contiene i file di configurazione di X11, come per esempio XF86Config. La directory /etc/skel/ contiene i file di base per gli utenti, cioè i file che servono per popolare una home directory quando viene creato un nuovo utente.
La directory /lib contiene solo le librerie necessarie all'esecuzione dei file binari presenti in /bin e /sbin. Queste immagini di librerie condivise sono particolarmente importanti per l'avvio del sistema e l'esecuzione di comandi all'interno del filesystem di root.
La directory /mnt è riservata ai filesystem montati temporaneamente, come i CD-ROM e i dischetti floppy.
La directory /opt fornisce un'area per la memorizzazione di pacchetti applicativi statici di grandi dimensioni.
Per evitare di inserire i file di un pacchetto nel filesystem, /opt fornisce un sistema organizzativo logico e prevedibile sotto la directory del pacchetto. In questo modo l'amministratore del sistema può facilmente determinare il ruolo di ogni file all'interno di un determinato pacchetto.
Per esempio, se sample è il nome di un pacchetto particolare all'interno di /opt, allora tutti i suoi file dovrebbero essere inseriti in /opt/sample. Per esempio /opt/sample/bin per i binari e /opt/sample/man per le pagine man.
Anche i pacchetti che comprendono più sotto-pacchetti, ognuno con un compito particolare, vanno inseriti in /opt e avranno così un modo standardizzato di organizzarsi. Per esempio, il pacchetto sample può avere diversi tool appartenenti ognuno alla propria sottodirectory come /opt/sample/tool1 e /opt/sample/tool2; ognuno di questi può avere la propria directory bin, man e altre directory simili.
La directory /proc contiene "file" speciali che estraggono o inviano informazioni al kernel.
Data la svariata quantità di dati disponibili in /proc e i vari modi in cui questa directory può essere usata per comunicare con il kernel, è stato dedicato un intero capitolo all'argomento. Per maggiori informazioni, consultate il Capitolo 5.
La directory /sbin contiene gli eseguibili utilizzati unicamente dall'utente root. Gli eseguibili in /sbin servono solo ad avviare e a montare /usr e a eseguire operazioni di ripristino del sistema. L'FHS dice:
"/sbin contiene normalmente i file essenziali per l'avvio del calcolatore oltre a quelli presenti in /bin. Qualunque altro eseguibile di sistema utilizzato dopo il mount della directory /usr (quando non si sono verificati problemi) deve essere collocato in /usr/sbin. I file binari riservati all'amministrazione locale del sistema devono essere inseriti in /usr/local/sbin."
In /sbin trovate almeno i seguenti programmi:
arp, clock, getty, halt, init, fdisk, fsck.*, grub, ifconfig, lilo, mkfs.*, mkswap, reboot, route, shutdown, swapoff, swapon, update |
La directory /usr contiene tutti i file condivisi nello stesso calcolatore (o da una rete). La directory /usr ha solitamente una partizione dedicata e dovrebbe essere montata in sola lettura. Quelle riportate di seguito sono le sottodirectory che dovrebbero essere contenute in /usr:
/usr |- bin/ |- dict/ |- doc/ |- etc/ |- games/ |- include/ |- kerberos/ |- lib/ |- libexec/ |- local/ |- sbin/ |- share/ |- src/ |- tmp -> ../var/tmp/ |- X11R6/ |
La directory bin contiene gli eseguibili, dict contiene le pagine di documentazione non conformi a FHS, etc contiene i file di configurazione del sistema, games quelli per i giochi, include contiene i file header di C, kerberos contiene i binari e molte altre cose per Kerberos e lib contiene file oggetti e librerie che non sono stati concepiti per essere usati direttamente dagli utenti o dagli script della shell. La directory libexec contiene piccoli programmi di help richiamati da altri programmi, sbin è per i binari di amministrazione del sistema (quelli che non appartengono a /sbin), share contiene i file non specifici per l'architettura, src contiene i codici sorgenti e X11R6 serve per il sistema X Window (XFree86 in Red Hat Linux).
"La gerarchia /usr/local viene utilizzata dall'aministratore di sistema quando installa il software a livello locale. Prima che il software sia aggiornato deve essere effettuato un back up di questa directory. Può essere usato per i programmi e i dati che sono condivisibili con altri gruppi di host, ma che non si trovano in /usr."
La directory /usr/local ha una struttura simile alla directory /usr. Contiene le sottodirectory seguenti, che hanno uno scopo simile a quelle contenute nella directory /usr:
/usr/local
|- bin/
|- doc/
|- etc/
|- games/
|- include/
|- lib/
|- libexec/
|- sbin/
|- share/
|- src/ |
Poiché l'FHS richiede che siate in grado di montare /usr in sola lettura, tutti i programmi che scrivono file di log o necessitano delle directory spool o lock dovrebbero scriverli nella directory /var. L'FHS in riferimento a /var è per:
"…file di dati variabili. Questa directory contiene i file di spool, di amministrazione, di log e i file temporanei."
Le seguenti directory sono tutte sottodirectory di /var:
/var
|- account/
|- arpwatch/
|- cache/
|- crash/
|- db/
|- empty/
|- ftp/
|- gdm/
|- kerberos/
|- lib/
|- local/
|- lock/
|- log/
|- mail -> spool/mail/
|- mailman/
|- named/
|- nis/
|- opt/
|- preserve/
|- run/
+- spool/
|- anacron/
|- at/
|- cron/
|- fax/
|- lpd/
|- mail/
|- mqueue/
|- news/
|- rwho/
|- samba/
|- slrnpull/
|- squid/
|- up2date/
|- uucp/
|- uucppublic/
|- vbox/
|- voice/
|- tmp/
|- tux/
|- www/
|- yp/ |
I file di log del sistema, come messages e lastlog si trovano in /var/log. La directory /var/lib/rpm contiene anche i database del sistema RPM. I file lock si trovano in /var/lock, solitamente in directory particolari per il programma che usa il file. La directory /var/spool ha delle sottodirectory per vari sistemi che devono memorizzare file di dati.
In Red Hat Linux, l'uso della directory /usr/local è leggermente diverso da quello specificato dall'FHS. L'FHS dice che /usr/local si dovrebbe trovare nel posto in cui è memorizato il software che non deve subire aggiornamenti del sistema. Poiché gli aggiornamenti di Red Hat vengono effettuati in modo sicuro con RPM e Strumento di gestione dei pacchetti, non dovete proteggere i file mettendoli in /usr/local. Invece, vi raccomandiamo di usare /usr/local per il software locale del vostro computer.
Per esempio, supponiamo che avete montato /usr tramite l'NFS in sola lettura da un host da un host remoto, é ancora possibile installare un pacchetto o un programma sotto la directory /usr/local/.