Capitolo 10. Il filesystem di GNU/Linux: ext2fs (EXTended 2 FileSystem)

Sommario
10.1. Tutto è un file
10.2. Collegamenti
10.3. Pipe "anonime" e pipe con nome
10.4. File "speciali": file in modalità a caratteri e file in modalità a blocchi
10.5. I link simbolici e le limitazioni degli "hard" link
10.6. Attributi dei file

Se avete letto il Manuale utente probabilmente avrete già incontrato i concetti di proprietà dei file e di permessi di accesso, ma per capire davvero il filesystem di GNU/Linux è necessario ridefinire il concetto stesso di file. Uno dei motivi è che:

10.1. Tutto è un file

Qui "tutto" significa davvero tutto: un disco rigido, una partizione sul disco, una porta parallela, una connessione a un sito web, una scheda Ethernet, tutte queste cose sono dei file. Persino le directory sono file. GNU/Linux è in grado di riconoscere molti tipi di file oltre ai file e alle directory standard. Notate che con tipo di file qui non ci riferiamo al contenuto di un file: per GNU/Linux e qualsiasi altro sistema Unix, un file, che si tratti di un'immagine GIF, di un file binario o di qualsiasi altro tipo, non è altro che una sequenza di byte. L'operazione di distinzione dei file in base al loro contenuto viene lasciata alle applicazioni.

Come ricorderete, quando impartite il comando ls -l, il carattere subito prima dei diritti di accesso identifica il tipo di file. Abbiamo già visto due tipi di file: file normali (-) e directory (d). Se cominciate a esplorare la struttura delle directory del vostro sistema, ed elencate il contenuto delle directory, troverete anche qualcuno dei seguenti:

  1. File in modalità a caratteri Questi sono file di sistema speciali (come /dev/null, che abbiamo già incontrato), o periferiche (porte parallele o seriali), che hanno in comune il fatto che il loro contenuto (se ne hanno) non è bufferizzato (in altre parole, non sono conservati in memoria). File di questo tipo sono identificati per mezzo della lettera 'c'.

  2. File in modalità a blocchi Questi file sono periferiche, e, a differenza dei file carattere, il loro contenuto è bufferizzato. File che rientrano in questa categoria sono, ad esempio, dischi rigidi, partizioni su questi ultimi, drive floppy, lettori CDROM e così via. I file /dev/hda, /dev/sda5 sono altrettanti esempi di File in modalità a blocchi. Nella visualizzazione dei risultati di ls -l, questi file sono identificati con la lettera 'b'.

  3. Collegamenti simbolici (noti anche come "link simbolici") Questi file sono molto diffusi, e ampiamente utilizzati nella procedura di avvio del sistema in Linux-Mandrake (si veda in proposito il capitolo I file di avvio del sistema: init "System V"). Come suggerisce il nome, il loro scopo è quello di collegare i file in modo simbolico, il che significa che file di questo tipo possono riferirsi a un file esistente oppure no; questo argomento verrà spiegato più avanti in questo capitolo. Molto spesso sono chiamati "soft link", e sono identificati con una 'l'.

  4. Pipe con nome Nel caso ve lo stiate chiedendo, sì, queste pipe sono molto simili a quelle usate con i comandi shell, ma la loro particolarità è quella di avere dei nomi. Continuate a leggere per saperne di più. Sono molto rare, comunque, ed è assai improbabile che voi ne incontriate una durante le vostre esplorazioni del sistema; in caso questo succedesse, la lettera che le identifica è la 'p'. Per saperne di più, date uno sguardo a Pipe "anonime" e pipe con nome.

  5. Socket Questo è il tipo di file usato per tutte le connessioni di rete. Soltanto alcuni di questi hanno un nome, tuttavia. Soprattutto, esistono diversi tipi di socket, ma solo un tipo può avere un nome nel filesystem. Tuttavia, questo argomento va ben oltre gli obiettivi di questo manuale. File di questo tipo vengono identificati con la lettera 's'.

Ecco un esempio di ciascun file:

$ ls -l /dev/null /dev/sda  /etc/rc.d/rc3.d/S20random /proc/554/maps \
  /tmp/ssh-queen/ssh-510-agent
crw-rw-rw-    1 root     root       1,   3 mag  5  1998 /dev/null
brw-rw----    1 root     disk       8,   0 mag  5  1998 /dev/sda
lrwxrwxrwx    1 root     root           16 dic  9 19:12 /etc/rc.d/rc3.d/S20random
-> ../init.d/random*
pr--r--r--    1 queen    queen           0 dic 10 20:23 /proc/554/maps|
srwx------    1 queen    queen           0 dic 10 20:08 /tmp/ssh-queen/ssh-510-agent=
$

Si consideri, inoltre, che ext2fs, come tutti gli altri filesystem Unix, archivia i file, qualunque sia il loro tipo, in una tabella inode. . Una caratteristica particolare di ext2fs è che un file non è identificato per mezzo del suo nome, ma con un numero di inode. Non tutti i file, in effetti, hanno un nome. I nomi sono soltanto la conseguenza di un principio più generale:


Tux on Star from MandrakeSoft Linux è un trademark registrato di Linus Torvalds. Tutti gli altri copyright e trademark appartengono ai rispettivi proprietari.
A meno che non sia specificato diversamente, tutto il contenuto di queste pagine e tutte le immagini sono Copyright MandrakeSoft S.A. e MandrakeSoft Inc. 2000.
http://www.linux-mandrake.com/