Chapitre 10. Le système de fichiers de GNU/Linux: ext2fs (EXTended 2 FileSystem)

Table des matières
10.1. Tout est fichier
10.2. Les liens
10.3. Tubes « anonymes  » et tubes nommés
10.4. Les fichiers « spéciaux  » : fichiers mode bloc et caractère
10.5. Les liens symboliques et la limitation des liens « en dur  »
10.6. Les attributs des fichiers

Le Guide de l'utilisateur a introduit les concepts de propriété des fichiers et les droits d'accès, mais pour vraiment comprendre le système de fichiers de GNU/Linux, il faut redéfinir cette notion même de fichier. Car, en fin de compte :

10.1. Tout est fichier

Ici, « tout  » veut vraiment tout : un disque dur, une partition sur ce disque dur, un port parallèle, une connexion à un site web, une carte Ethernet, même les répertoires sont des fichiers pour GNU/Linux. Ainsi, mis à part les fichiers ordinaires et ces répertoires, d'autres types de fichiers sont donc reconnus. Mais ces types ne sont pas de l'ordre d'une différence de contenu puisque, pour GNU/Linux et pour tout système Unix, un fichier, qu'il soit une image GIF, un fichier binaire ou autre, n'est fondamentalement qu'une quantité d'octets. La différenciation des fichiers en fonction de leur contenu est du ressort des applications.

Vous vous souviendrez sans doute que dans la phrase ls -l, le caractère qui apparaît avant l'énoncé des droits d'accès représente le type du fichier. Deux types de fichiers ont déjà été présentés : les fichiers ordinaires (-) et les répertoires (d). Il est possible que vous rencontriez également ceux qui suivent si vous vous baladez dans l'arborescence et listez le contenu des répertoires :

  1. Fichiers en mode caractère  ;: ces fichiers sont soit des fichiers spéciaux du système (tel /dev/null, déjà mentionné) ou des périphériques (ports série ou parallèle) ; leur particularité commune étant en fait que leur contenu (s'il existe) n'est pas conservé en mémoire[1]. L'identification de ces fichiers se fait par la lettre 'c'.

  2. Fichiers en mode bloc : ces fichiers sont des périphériques, et contrairement aux fichiers en mode caractère, leur contenu est, quant à lui, sauvegardé en mémoire. Les fichiers qui entrent dans cette catégorie peuvent être les disques durs, les partitions sur ces disques durs, les lecteurs de disquettes et de CD-ROM, etc. Les fichiers /dev/hda, /dev/sda5 sont d'autres exemples de ces fichiers en mode bloc. Sur la sortie d'un ls -l, ces fichiers seront identifiés par la lettre 'b'.

  3. Liens symboliques : ces fichiers sont très courants et très utilisés dans la procédure de démarrage de Linux-Mandrake (voir le chapitre Les fichiers de démarrage : init « System V  »). Comme leur nom l'indique, leur raison d'être est de lier symboliquement d'autres fichiers, c'est-à-dire qu'ils pointent (ou non) sur un fichier existant (ce point précis sera explicité plus loin dans le présent chapitre). Ils sont très souvent appelés soft links en anglais, et sont identifiés par la lettre 'l'.

  4. Tubes nommés : au cas où vous vous posez la question : ils sont effectivement très similaires aux tubes utilisés par le shell, mais avec la particularité que ceux-ci ont un nom. Ils sont en fait très rares, et il est peu probable que vous en voyiez un durant votre voyage dans l'arborescence. Au cas où, cependant, leur identification se fait par la lettre 'p' (pour en apprendre plus, lisez Tubes « anonymes  » et tubes nommés).

  5. Sockets : ce type de fichier est celui de toutes les connexions réseau. Mais seules quelques-unes[2] d'entre elles portent des noms. Pour compliquer les choses, il existe plusieurs types de sockets, mais ces subtilités de classement dépassent de loin les objectifs de ce manuel. Des tels fichiers seront identifiés par la lettre 's'.

Voici un exemple pour chacun de ces types de fichiers :

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

On ajoutera que ext2fs, comme tous les autres systèmes de fichiers Unix, stocke ces fichiers, quel que soit leur type, dans une table des i-nœuds . Une des particularités en est qu'un fichier n'est pas identifié par son nom mais par un numéro d'i-nœud. En fait, il arrive que certains fichiers restent anonymes, les règles mêmes de nomination découlant en fait de l'organisation des liens. Que sont-ils ?

Notes

[1]

On emploie parfois le néologisme barbare « bufferisé  », qui vient de l'anglais buffered, c'est-à-dire gardé en mémoire dans des tampons (buffers).

[2]

On emploiera « socket  » au féminin en français.


Tux sur Étoile de MandrakeSoft Linux est une marque déposée de Linus Torvalds. Toutes les autres marques et copyrights sont la propriété de leurs auteurs respectifs.
Sauf mention contraire, tout le contenu de ces pages et toutes les images sont Copyright MandrakeSoft S.A. et MandrakeSoft Inc. 2000.
http://www.linux-mandrake.com/