3.2. Panoramica sull'FHS (Filesystem Hierarchy Standard)

Red Hat Enterprise Linux usa la struttura del file system Filesystem Hierarchy Standard (FHS), che definisce i nomi, la posizione e i permessi per molti file e directory.

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.

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.

3.2.1. Organizzazione dell'FHS

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.

Lo standard completo è disponibile online su http://www.pathname.com/fhs/.

3.2.1.1. La directory /boot/

La directory /boot/ contiene file statici necessari per l'avvio del sistema, come ad esempio il kernel di Linux. Questi file sono essenziali per un avvio corretto del sistema.

AttenzioneAvvertenza
 

Non eliminate la directory /boot/, altrimenti non sarà più possibile avviare il sistema.

3.2.1.2. La directory /dev/

La directory /dev/ contiene voci del filesystem che rappresentano dispositivi collegati al sistema. Questi file sono essenziali perché il sistema funzioni correttamente.

3.2.1.3. La directory /etc/

La directory /etc/ è riservata ai file di configurazione locali presenti sulla vostra macchina. 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 /etc/X11/ viene designata per i file di configurazione del sistema X Window, come ad esempio XF86Config. La directory /etc/skel/ viene designata per i file dell'utente "skeleton", cioè i file che servono per popolare una home directory quando viene creato un nuovo utente.

3.2.1.4. La directory /lib/

La directory /lib/ dovrebbe contenere 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.

3.2.1.5. La directory /media/

La directory /mnt/ contiene le sottodirectory utilizzate come mount point per quei media in grado di essere rimossi, come ad esempio i CD-ROM, Zip ed i dischetti floppy da 3.5.

3.2.1.6. La directory /mnt/

La directory /mnt/ è riservata ai filesystem montati temporaneamente, come i mount del file system NFS. Per tutti i media in grado di essere rimossi, utilizzare la directory /media/

NotaNota Bene
 

Questa directory non deve essere installata dai programmi di installazione.

3.2.1.7. La directory /opt/

La directory /opt/ fornisce un'area per la memorizzazione di pacchetti applicativi statici di grandi dimensioni.

Un pacchetto che posiziona i file nella directory /opt/, crea una directory che presenta lo stesso nome del pacchetto. Questa directory, in ritorno, conserva i file che altrimenti verrebbero sparsi attraverso il file system, dando all'amministratore del sistema un modo semplice per determinare il ruolo di ogni file all'interno di un pacchetto particolare.

Per esempio, se sample è il nome di un pacchetto software 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 del manuale.

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.

3.2.1.8. La directory /proc/

La directory /proc/ contiene i file speciali che estraggono o inviano informazioni al kernel.

Data la svariata quantità di dati disponibili in /proc/ ed 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 Capitolo 5.

3.2.1.9. La directory /sbin/

La directory /sbin/ contiene gli eseguibili utilizzati unicamente dall'utente root. Gli eseguibili in /sbin/ servono solo al momento dell'avvio e per eseguire le operazioni di recupero del sistema.L'FHS dice:

/sbin contiene normalmente i binari essenziali per l'avvio, il ripristino, il recupero e/o la riparazione del sistema oltre a quelli presenti in /bin. Qualunque altro programma eseguito dopo il montaggio della directory /usr/ (quando non si verifica alcun problema) deve essere collocato in /usr/sbin. I Programmi di gestione del sistema installati in modo locale devono essere inseriti in /usr/local/sbin.

In /sbin/ trovate, come minimo, i seguenti programmi:

arp, clock,halt,
init, fsck.*, grub,
ifconfig, mingetty, mkfs.*, 
mkswap, reboot, route, 
shutdown, swapoff, swapon

3.2.1.10. La directory /srv/

La directory /srv/ contiene i dati specifici al sito forniti dal vostro sistema, che a sua volta stà eseguendo Red Hat Enterprise Linux. Questa directory fornisce agli utenti la posizione dei file data riguardanti un servizio particolare, come ad esempio FTP, WWW, o CVS. I dati che si riferiscono ad un utente in particolare, dovrebbero essere conservati all'interno della directory /home/.

NotaNota Bene
 

Tenete presente che i file data che si trovano attualmente in /var/, potrebbero essere spostate in /srv/ in release future.

3.2.1.11. La directory /sys/

La directory /sys/ utilizza il nuovo file system virtuale specifico al kernel 2.6. Grazie al maggior supporto per dispositivi hardware hot plug con il kernel 2.6, la directory /sys/ contiene le stesse informazioni contenute in /proc/, ma in grado di visualizzare una panoramica gerarchica di informazioni specifiche riguardanti i dispositivi hot plug.

Per verificare il montaggio effettivo dei dispositivi USB e FireWire, consultate le pagine man di /sbin/hotplug e /sbin/udev

3.2.1.12. La directory /usr/

La directory /usr/ contiene tutti i file che possono essere condivisi attraverso macchine multiple. La directory /usr/ è solitamente nella propria partizione, ed è montata come sola lettura. Le seguenti directory dovrebbero rappresentare le sottodirectory di /usr/:

/usr
  |- bin/
  |- etc/
  |- games/
  |- include/
  |- kerberos/
  |- lib/
  |- libexec/	    
  |- local/
  |- sbin/
  |- share/
  |- src/
  |- tmp -> ../var/tmp/
  |- X11R6/

Sotto la directory /usr/, la sottodirectory bin/ contiene gli eseguibili, 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 relative a Kerberos, e lib/ contiene i file object e le librerie che non sono stati concepiti per essere usati direttamente dagli utenti o dagli script della shell. La directory libexec/ contiene piccoli programmi d'aiuto richiamati da altri programmi, sbin/ è per i binari di amministrazione del sistema (quelli che non appartengono alla directory /sbin/), share/ contiene i file non specifici per l'architettura, src/ contiene i codici sorgente e X11R6/ è destinato al Sistema X Window (XFree86/ su Red Hat Enterprise Linux).

3.2.1.13. La directory /usr/local/

L'FHS afferma che:

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 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/
       |- etc/
       |- games/
       |- include/
       |- lib/
       |- libexec/
       |- sbin/
       |- share/
       |- src/

In Red Hat Enterprise Linux, l'uso desiderato della directory /usr/local/ è leggermente diverso da quello specificato dall'FHS. L'FHS afferma che /usr/local/ si dovrebbe trovare nel posto in cui è memorizato il software che non deve subire aggiornamenti del sistema. Poiché gli aggiornamenti del software vengono effettuati in modo sicuro con RPM Package Manager (RPM), non è necessario proteggere i file mettendoli in /usr/local/. Invece, vi raccomandiamo di usare /usr/local/ per il software locale della vostra macchina.

Per esempio, se la directory /usr/ viene montata come sola condivisione NFS da un host remoto, è ancora possibile installare un pacchetto o un programma sotto la directory /usr/local/.

3.2.1.14. La directory /var/

Poiché con FHS dovete essere in grado di montare /usr/ in sola lettura, tutti i programmi che scrivono il file log o necessitano delle directory spool/ o lock/ dovrebbero scriverli nella directory /var/. L'FHS afferma che /var/ è per:

...file di dati variabili. Questa directory contiene le directory e i file di spool, dati di loggin e di amministrazione, file temporanei e transitori.

Le seguenti directory si trovano all'interno della directory /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/
       |- at/
       |- clientmqueue/
       |- cron/
       |- cups/
       |- exim/	      
       |- lpd/
       |- mail/
       |- mailman/
       |- mqueue/
       |- news/
       |- postfix/ 
       |- repackage/
       |- rwho/
       |- samba/ 
       |- squid/
       |- squirrelmail/
       |- up2date/
       |- uucp 
       |- uucppublic/
       |- vbox/
  |- tmp/
  |- tux/
  |- www/
  |- yp/

I file 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 nella directory /var/lock/, solitamente in directory particolari per il programma che usa in modo specifico il file. La directory /var/spool/ possiede le sottodirectory per i programmi nei quali vengono conservati i file data.