Système de fichiers

Comme nous l’avons vu précédemment, les données sont présentées à l’utilisateur et aux programmes selon une organisation structurée, sous la forme de dossiers et de fichiers. Pour pouvoir stocker ces données structurées sur un disque dur, il faut utiliser un format qui les représente sous la forme d’une succession de blocs de données. C’est le système de fichier.

Notion de périphérique

Pour rappel, en Linux, tout est fichier, même les périphériques. Chaque périphérique du système (que ce soit le clavier, la souris, un disque ou une imprimante) est représenté par un fichier spécial. Écrire dans ce fichier va envoyer des commandes au périhérique, tandis que lire ce fichier en permettra d’extraire les informations.

Les périphériques sont tous stockés dans le répertoire /dev. Voyons les principaux :

Fichier Périphérique
/dev/input/mouse0 Souris
/dev/sdx ou /dev/hdx Disque dur sata (ou IDE pour hda)
/dev/ttyxx Écran (terminal)
/dev/ttySx Port série
/dev/usb Ports USB (un sous-dossier par port)
/dev/null Périphérique spécial. Ce périphérique ignorera tout ce qu’il reçoit en entrée.
/dev/zero Périphérique spécial. Ce périphérique produit une infinité de 0
/dev/random Périphérique spécial. Ce périphérique produit une infinité de nombres aléatoires.
/dev/cdrom Lecteur de CD.

Notion de partition

Une partition est une section d’un disque dur. Le partitionnement du disque consiste à créer des zones sur le disque dur dont les données ne seront pas mélangées.

Il existe trois types de partitions : la partition principale (chiffrées de 1 à 4), la partition étendue, et les lecteurs logiques (chiffrés de 5 à 20). Les lecteurs logique seront créés dans la partition étendue.

Chaque disque dur peut « physiquement » contenir 4 partitions principales, ou 3 partitions principales et la partition étendue.

Montage et démontage d’une partition

Monter une partition signifie que l’on va attacher un périphérique à un répertoire (souvent situé dans /mnt). Attention, seul un administrateur peut monter un périphérique. Pour afficher la liste des périphériques montés, nous utliserons la commande mount.

Pour monter un périphérique, nous utiliserons mount en donnant le périphérique à monter et le point de montage : mount /dev/cdorm /mnt/cd  montera le lecteur de cd dans le répertoire /mnt/cd.

Avant d’enlever un périphérique du système, il faut le démonter. C’est le rôle de la commande unmount. Exemple : unmount /mnt/cd

Montage automatique

Certains disques doivent être montés au démarrage. Par exemple, le système de fichiers racine, ainsi que chaque partition. Le fichier /etc/fstab contient la définition des systèmes de fichiers (partitions et lecteurs) montés automatiquement au démarrage du système et indique également comment les monter. Regardez le contenu de ce fichier.

Le fichier fstab contient différentes lignes constituées de 6 parties :

Le système à monter

Le premier champ de chaque ligne de fstab doit contenir, pour être valide un nom de fichier, la plupart du temps, ce sera un fichier « périphérique », c’est à dire un fichier de « /dev ». Par exemple : « /dev/hda5 » (5ème partition du 1er disque IDE).

Le point de montage

Le second champ sert à indiquer à mount à quel endroit (point de montage) le périphérique doit apparaître dans l’arborescence de notre « système de fichier » : c’est à dire le chemin (ex : « /mnt/floppy ») qui nous servira à accéder à ce périphérique.

Type de fichier

Ce champ indique à mount quel est le type du système de fichiers contenu sur le périphérique. Pour un disque Linux, ce sera « ext2 » (ou « ext3 » ou « reiserfs » ou « xfs ») ; pour un disque se sera « vfat » ; pour un lecteur de cdrom ce sera « iso9660 », etc.

subfs

subfs ou Submount est un système pour automatiquement monter et démonter les disques amovibles comme des cdroms et disquettes. Cela fonctionne sous Linux (noyau 2.6 min).

Une fois installé, il permet aux disques amovibles d’être consultées comme si ils étaient montés de manière permanente. Exemple : mount -t subfs /dev/scd0 /mnt/cdrom -o fs=iso9660,ro

Remarque : Il existe pour le subfs deux type d’options

  1. fs=floppyfss (vfat et ext2)
  2. fs=cdfss (iso9660 et udf)

Les options

Ce champ est un peu particulier, car il indique à mount ce qu’il doit faire de manière plus précise ; par exemple : quels sont les droits du fichier contenu sur un système vfat (qui rappelons-le ne sait pas gérer de droits comme Linux)  ? Est-ce qu’un utilisateur peut monter ce périphérique  ? Est-ce qu’on peut lancer les exécutables sur ce périphérique ? Etc…

Chacune des options est séparée des autres par une virgule. Vous ne pouvez pas utiliser d’espace dans la chaîne d’options, sinon vous devez les entourer de  » « . Détaillons ici quelques options importantes :

user/nouser

Vous pouvez vouloir qu’un utilisateur puisse monter lui-même une partition de type vfat et pas uniquement le root, pour cela il faut préciser l’option : « user ». Par exemple :

/dev/hda2 /mnt/dos_c vfat user,exec 0 0

ou, si vous utilisez NTFS :

/dev/hda2 /mnt/dos_c ntfs user,exec 0 0

De cette façon n’importe quel utilisateur peut monter la partition /dev/hda2, mais uniquement sur « /mnt/dos_c », en utilisant la commande : mount /mnt/dos_c

Si vous précisez « nouser » (c’est l’option par défaut) aucun utilisateur ne pourra monter ce système de fichier.

exec/noexec

Vous (vous et vos utilisateurs) pouvez vouloir exécuter des programmes sur cette partition vfat. Mais comme celle-ci ne permet pas d’utiliser les droits chers aux systèmes POSIX (dont Linux fait partie)… il faut utiliser l’option : « exec ». De cette façon tous les fichiers stockés sur cette partition sont exécutables (ils en ont seulement les droits !!)  par le système. Avec « noexec » aucun fichier n’est exécutable.

auto/noauto

vous pouvez vouloir que cette partition soit montée automatiquement, dans ce cas vous utiliserez l’option « auto » (c’est l’option par défaut). Pour monter les partitions automatiques il faut préciser à mount le paramètre -a. L’option « noauto » permet de ne pas monter automatiquement une partition (par exemple un lecteur de cdrom, de disquette ou de zip)

ro/rw

Le paramètre « ro » indique à mount de monter ce système de fichier en mode lecture seule (read only), «  rw  » permet de monter ce système en lecture/écriture (read write). Même le root ne peut pas passer outre ce paramètre dans une écriture directe.

Remarque: si vous utilisez un kernel inférieur à 2.5, avec le support des partitions NTFS, il est déconseillé d’utiliser l’option « rw » car, l’écriture sur des partitions NTFS avec ces kernels est réputée « destructrice » du système de fichier.

suid

ceci ne s’applique qu’aux partitions ayants des droits (i.e.: pas les vfat) : suid permet d’utiliser les programmes utilisant le bit set-UID (ou set-GID). C’est à dire les programmes outrepassant les droits normaux des utilisateurs.

uid/gid

ces options permettent de fixer l’uid (user identifier) et le gid (group identifier) de tous les fichiers de ce système de fichier. Elles utilisent la syntaxe : /dev/hda2 /mnt/dos_c vfat user,uid=500,gid=500 0 0.

Lorsque la partition /dev/hda2 est montée, tous ses fichiers appartiennent au groupe 500 et à l’utilisateur 500.

Remarque : si vous ne précisez rien : les fichiers appartiennent à l’utilisateur ayant appelé mount (root si vous n’avez rien fait de spécial).
umask

Cette option fixe l’umask des fichiers de ce système de fichier. L’umask est un « masque » de bit des permissions qui ne sont pas fournies. Exemple si vous mettez : /dev/hda2 /mnt/dos_c vfat user,umask=002 0 0, alors tous les fichiers de ce système de fichier ont les droits 777 – umask = 777 – 002 = 775 (c’est à dire les droits : rwxrwxr-x) : donc tout le monde pourra lire ou exécuter des fichiers sur ce système de fichiers, mais seuls les membres du groupe et l’utilisateur possédant les fichiers pourront les modifier.

conv=binary/conv=text/conv=auto (ne s’applique pas à NTFS)

Comme vous le savez certainement les fichiers texte de et DOS n’ont pas le même format que ceux des Linux (le caractère indiquant un retour à la ligne est différent). Ce paramètre permet au noyau de Linux de faire une conversion automatique. Si la conversion est « binary  » (c’est le comportement par défaut) aucune conversion n’est effectuée (et ainsi aucune corruption d’un fichier ne peut arriver…).

Si la conversion est « text » tous les fichiers sont considérés comme étant de type texte et une conversion est effectuée. Cela pose problème pour certains fichiers/programmes: par exemple, un fichier image (.jpg ou autre) sera certainement corrompu, car certains de ses octets seront modifiés.

Si la conversion est « auto », alors certains fichiers (i.e.: .exe, .com etc…) ne sont pas convertis. Cela peut aussi poser quelquefois des problèmes, mais un peu moins qu’avec l’option « text ». Le plus simple est de laisser la conversion sur « binary » et d’effectuer soit même la conversion.

iocharset

Ce paramètre sert à indiquer à Linux que le système de fichiers vfat ou NTFS qu’il doit monter stocke ses noms de fichiers avec un ensemble de caractères (charset) spécifique. En Belgique, le charset a toute les chance d’être : iso8859-1 (c’est le défaut) ou iso8859-15 (contient aussi le symbol euro).

codepage

Ce paramètre sert à indiquer à Linux que le système de fichiers vfat ou NTFS qu’il doit monter stocke ses noms de fichiers avec une page de code spécifique. Par défaut la page de code est la page 437 qui correspond aux caratères américains. Il y a fort à parier que votre partition utilise la page de code 850 qui correspond aux caractères des langues européennes. Il faut donc ajouter l’option : codepage=850.

Sauvegarde

Indique si le système de fichiers contient des données qui devront être sauvegardées lorsque la commande dump (réalisation de backup) est invoquée.

fsck

Indique le numéro d’ordre de vérification lorsque la commande fsck est invoquée sur tous les systèmes de fichiers (p.e. lors d’un arrêt brutal)

Print Friendly, PDF & Email