La structure du système de fichiers
Signature : | Mis en ligne le : 30/11/2007
Catégorie(s) :
  • Linux Pratique
  • | Domaine :
    Commentez

    Retrouvez cet article dans : Linux Pratique 35

    Les systèmes Linux adoptent tous une architecture standard pour l'organisation des fichiers. En effet, l'arborescence de fichiers respecte à quelques détails près le FHS (Filesystem Hierarchy Standard), un document de référence, établi dans le but d'homogénéiser la structure des systèmes de fichiers UNIX 1. Dans cet article, nous allons passer en revue la plupart des répertoires décrits dans le FHS, afin de bien comprendre le rôle de chacun.1 Vous trouverez le document complet de la description de ce standard à l'adresse suivante : http://www.pathname.com/fhs/ Les répertoires /bin et /sbin Le répertoire /bin contient des fichiers exécutables (fichiers "binaires"). Rien à voir avec une quelconque corbeille... Il s'agit en fait des commandes de base, fréquemment employées par les utilisateurs (et par l'administrateur du système), notamment pour effectuer des opérations sur les fichiers (ls, more, cat, cp, rm, chmod, grep, mkdir, mount, kill, tar, gunzip, etc.). En outre, ces commandes peuvent être utilisées par certains programmes. Ce répertoire contient également quelques liens symboliques pointant vers des programmes se situant dans un autre répertoire. Remarquez en particulier le lien /bin/sh (sh pour shell), un lien symbolique pointant en général vers /bin/bash (Bash étant l'interpréteur de commandes du projet GNU). Le répertoire /sbin contient lui aussi des fichiers exécutables (reboot, lsmod, modprobe, etc.) à la différence près que les utilitaires ne sont pas compilés de la même manière que dans /bin. Ils sont compilés de manière statique (sbin pour static binary), ce qui signifie qu'ils sont totalement autonomes et ne nécessitent aucune bibliothèque supplémentaire. En revanche, les utilitaires du répertoire /bin sont compilés en dynamique : les bibliothèques contenant les phrases qu'ils utilisent doivent être impérativement installées sur le système. En outre, les commandes contenues dans /sbin sont réservées exclusivement au super-utilisateur alors que les commandes contenues dans /bin peuvent être employées par tous les utilisateurs. Un système de fichiers est une structure dans laquelle les fichiers sont organisés dans des répertoires, qui eux-mêmes sont organisés de façon hiérarchique. L'arborescence de fichiers ainsi constituée peut contenir plusieurs systèmes de fichiers. Le répertoire racine / se trouve au sommet de cette arborescence. Il contient de nombreux répertoires que nous allons détailler ici. Pour visualiser le contenu de la racine, entrez les commandes cd /puis ls dans un terminal, ou bien ouvrez votre navigateur de fichiers graphique, puis cliquez sur Système de fichiers.

    Le répertoire /boot

    Ce dossier contient des fichiers nécessaires au démarrage du système. En d'autres termes, il contient la base même du système : le noyau Linux. On y trouve aussi des fichiers de ressources pour Grub. Grub (Grand Unified Bootloader) est un programme chargé de démarrer le système (tout comme Lilo, Linux Loader). Il est capable de reconnaître et de démarrer de multiples systèmes de fichiers. Un menu graphique peut être affiché au démarrage : cette interface vous permet en général de choisir quel système d'exploitation ou distribution vous souhaitez démarrer, autrement dit, quelle partition du disque doit être lancée. Le fichier de configuration de Grub est /boot/grub/menu.lst.

    Le répertoire /etc

    Le nom de ce répertoire est à traduire par Editing Text Config. Il contient en effet tous les fichiers de configuration du système et les principaux scripts de démarrage. Tous sont des fichiers textes simples, que vous pouvez modifier avec n'importe quel éditeur de texte. Explicitons plus en détail certains fichiers et répertoires contenus dans /etc...
    • Le répertoire /etc/X11 concerne les scripts de configuration du serveur X.
    • Le répertoire /etc/skel contient le "squelette" des fichiers d'utilisateurs, donné par défaut aux nouveaux utilisateurs qui reçoivent un compte. Ce répertoire peut contenir des sous-répertoires pour différents groupes d'utilisateurs.
    • Les répertoires /etc/rc*.d contiennent des scripts de démarrage du système. Sous Linux, les fichiers de démarrage portent un nom commençant par "rc". Ils comportent un ensemble de commandes permettant le démarrage complet du système. Ces fichiers sont invoqués par le processus init selon le fichier de configuration /etc/inittab. Le fichier principal, rc, se trouve dans /etc/rc.d/rc (Red Hat) ou dans /etc/init.d (Debian, Ubuntu), le chemin peut être différent selon votre distribution.
    • Le répertoire /etc/apt/ concerne la mise à jour des packages Debian (donc spécifiques aux distributions Debian et dérivées) ; vous y trouverez notamment le fichier sources.list qui désigne les différents dépôts de paquets pour Debian (et distributions dérivées).
    • Les répertoires /etc/apache2 et /etc/mysql contiennent respectivement les fichiers de configuration de votre serveur web Apache et de votre serveur de base de données MySQL.
    • Le répertoire /etc contient par ailleurs divers fichiers relatifs à la connexion réseau comme le fichier /etc/hostname, qui accueille l'alias de votre machine, le fichier /etc/hosts qui permet de définir la correspondance entre les adresses IP des machines du réseau et leur nom d'hôtes, et les fichiers /etc/hosts.allow et /etc/hosts.deny qui respectivement autorisent ou interdisent l'accès du système (l'utilisation de services) à certaines machines (adresses IP).
    • Le répertoire /etc peut également contenir un fichier de configuration du bootloader Lilo (lilo.conf).
    • Le fichier /etc/anacrontab définit les tâches qui doivent être exécutées périodiquement, à des moments bien précis (en général pendant la nuit si votre machine reste allumée ou pendant le démarrage du système). Pour chaque tâche évoquée dans ce fichier, Anacron vérifie si le travail a été effectué dans les x derniers jours (valeur spécifiée dans le fichier). Si ce n'est pas le cas, Anacron exécute la commande associée à ladite tâche. Une fois la tâche effectuée, Anacron enregistre la date du jour dans un fichier du répertoire /var/spool/anacron.
    • Le fichier /etc/group définit tous les groupes du système. Chaque ligne du fichier désigne un groupe, et contient quatre champs dans cet ordre : le nom du groupe, le mot de passe associé au groupe, le GID (qui détermine les permissions sur les fichiers), la liste des utilisateurs appartenant au groupe.
    • Le fichier /etc/passwd contient toutes les informations relatives aux comptes utilisateur (login, mot de passe, UIG, GID, nom complet, répertoire personnel, le programme lancé à la connexion). Ce fichier est primordial ! Sans lui, il vous sera impossible d'utiliser votre système.
    • Le fichier de configuration /etc/modules.conf regroupe les paramètres éventuels à passer lors du chargement des modules du noyau.
    • Enfin, il est possible de définir les montages des différents systèmes de fichiers grâce au fichier /etc/fstab. Il fait l'inventaire des divers systèmes de fichiers que le noyau Linux est susceptible de gérer, précise la façon de les monter, s'ils doivent l'être au démarrage, etc. Ainsi, si toutes les informations nécessaires au montage d'un système de fichiers se trouvent dans ce fichier, seul le nom du périphérique ou du point de montage suffira pour monter le système de fichiers associé.
    Comme vous pouvez le voir sur la capture correspondante, chaque ligne de la "table de montage" présente les champs suivants :
    • le nom du périphérique ou son libellé ;
    • le point de montage ;
    • le type du système de fichiers (ext3, swap, vfat, iso9660, etc.) ;
    • les différentes options de la commande de montage mount ;
    • une indication pour la commande de sauvegarde dump ;
    • l'ordre de vérification du système de fichiers au démarrage par fsck.
    Le répertoire /home C'est certainement le répertoire que vous utilisez le plus souvent. Ce répertoire est votre répertoire de travail, ou plus généralement, le répertoire de travail de tous les utilisateurs de l'ordinateur. Vous y trouverez un dossier pour chaque utilisateur (nommé en général par votre login) : /home/francois/, /home/isabelle/, etc. Et c'est dans votre répertoire /home/votre_login/ que vous stockez vos fichiers textes, vos documents PDF, vos photos et vidéos, vos fichiers de musique, etc. Vous y trouverez aussi vos propres fichiers de configuration, autrement dit vos paramètres d'utilisation des diverses applications. Ces derniers apparaissent sous forme de fichiers ou répertoires cachés (leur nom commence par un point). Il faut saisir la commande ls -a pour pouvoir les lister, ou bien sélectionner Afficher les fichiers cachés dans votre navigateur graphique. Ex : /home/login/.evolution/, /home/login/.gimp-2.2/, /home/login/.mozilla/, /home/login/.audacity, /home/login/.grip, etc. Remarque : lors de l’installation de votre distribution, il est assez pertinent d’installer le répertoire /home sur une partition distincte du reste du système. De cette manière, les données utilisateurs et les données système sont clairement séparées.

    Le répertoire /root

    Comme vous l'avez peut-être deviné, ceci est le répertoire personnel du super-utilisateur (root). C'est l'équivalent d'un répertoire /home, mais celui-ci est réservé à l'administrateur du système.

    Le répertoire /lib

    Ce répertoire contient les bibliothèques nécessaires à l'exécution des fichiers binaires contenus dans les répertoires et /sbin, et utilisées également lors du processus de démarrage. Par conséquent, les répertoires /bin, /sbin et /lib sont fondamentaux pour votre système. En particulier, vous trouverez les fichiers de code compilé des modules de votre noyau dans le sous-répertoire nommé /lib/modules/version_noyau/... /bin Le répertoire /dev Ce répertoire contient des fichiers spéciaux, qui permettent au système de communiquer avec les divers périphériques : disques durs, souris, carte son, etc. (dev pour device, qui signifie périphérique). Ces fichiers sont donc essentiels pour le bon fonctionnement du système. Ces fichiers spéciaux sont créés au moment de l'installation. Les noms de ces fichiers respectent une certaine nomenclature. Ainsi, les fichiers relatifs aux lecteurs de disquettes sont /dev/fd* (fd pour floppy disk), pour les disques durs non SCSI, il s'agit de /dev/hda* et /dev/hdb*, pour les disques durs SCSI : /dev/sda* ou /dev/sdb*. Enfin, les fichiers /dev/tty* concernent les modems et autres périphériques série. Chacun des fichiers est caractérisé par un couple de numéros appelé " majeur/mineur ". Ces deux numéros permettent au noyau du système d'identifier le type de périphérique associé au fichier. Le répertoire /dev contient aussi, sur la plupart des distributions, un script nommé MAKEDEV capable de créer des fichiers spéciaux lors de l'ajout de nouveaux pilotes de périphériques. Par ailleurs, /dev abrite un fichier très spécial, il s'agit du fichier /dev/null. Toute donnée qui y est inscrite disparaît immanquablement. En quelque sorte, ce fichier fait office de poubelle. Les programmeurs s'en servent parfois pour rejeter la sortie standard d'une ligne de commande.

    Le répertoire /proc

    Ce répertoire est considéré comme un "pseudo-répertoire". Il contient en fait une image de votre système. Plus précisément, c'est un système de fichiers virtuel qui représente l'état de votre système et des processus en cours d'exécution. Pour chaque processus lancé, un sous-répertoire est créé dans /proc/. Note : Un article entièrement consacré à /proc est paru dans Linux Pratique n°33. Je vous invite à le consulter pour de plus amples informations. Les répertoires /mnt et /media Le système se sert du répertoire /mnt pour effectuer le montage des partitions externes. Il est vide ou peut contenir quelques répertoires vides prédéfinis, comme /mnt/floppy/ ou /mnt/cdrom/, prévus respectivement pour le montage du lecteur de disquettes et le lecteur de CD-Rom. Notez que ces répertoires peuvent varier d'une distribution à l'autre ; parfois, il est possible de les trouver dans le répertoire /media. En fait, le répertoire /media est réservé généralement au montage des périphériques dits " amovibles " (lecteur de disquette et de CD-Rom, clef USB, etc.) et /mnt sert essentiellement à l'administrateur système pour le montage temporaire de systèmes de fichiers.

    Le répertoire /lost+found

    Ce répertoire est créé automatiquement au démarrage de votre système. Il est utilisé par l'outil de vérification fsck (File System Check) pour le stockage des fichiers récupérés suite à un incident sur le système (plantage, coupure de courant, etc.). Ce répertoire est censé être vide.

    Le répertoire /opt

    C'est dans ce répertoire que s'effectue l'installation d'applications supplémentaires. Plus précisément ce répertoire permet de stocker des paquetages de logiciels statiques de grande taille. L'avantage, c'est que /opt fournit un système organisationnel logique. Lorsqu'un paquetage est installé dans /opt, il crée automatiquement un répertoire portant le nom du paquetage, qui va contenir tous les fichiers inhérents au paquetage en question. Par exemple, le paquetage exemple sera contenu dans le répertoire /opt/exemple/, lequel contiendra des sous-répertoires du type /opt/exemple/bin, /opt/exemple/man, etc. De cette façon, l'administrateur système s'y retrouve plus facilement et comprend mieux le rôle des différents fichiers du paquetage.

    Le répertoire /srv

    Ce répertoire renferme des données spécifiques concernant les différents services disponibles sur le serveur. Les données y sont en général classées par protocole (ftp, www, cvs, etc.).

    Le répertoire /tmp

    C'est dans ce répertoire que le système va stocker tous les fichiers temporaires dont il a besoin. Notez que tous les utilisateurs du système peuvent déposer un fichier dans ce répertoire, mais sachez que ce répertoire est régulièrement "nettoyé", en fonction de ce qu'aura paramétré l'administrateur du système. Pour une utilisation personnelle, il est préférable de créer et utiliser un répertoire /tmp dans son répertoire /home, sur lequel on pourra contrôler la suppression des fichiers.

    Le répertoire /usr

    Ce répertoire est l'un des plus importants car il renferme toutes les ressources du système (usr pour Unix System Resources). En outre, c'est le répertoire (avec votre répertoire personnel /home), qui occupe le plus de place sur votre disque dur. Il contient lui-même plusieurs sous-répertoires :
    • Dans /usr/bin/, vous trouverez les fichiers exécutables de toutes les applications installées sur votre système grâce au gestionnaire de paquets (deb ou rpm). Ces utilitaires seront donc spécifiques à votre distribution. Parallèlement, le dossier /usr/lib/ renferme les bibliothèques associées aux exécutables contenus dans le dossier /usr/bin/.
    • Le répertoire /usr/include/, quant à lui, contient les fichiers d'en-tête (issus de l'installation éventuelle de versions de développement des bibliothèques). Par conséquent, ce répertoire est utile lors de la compilation de programmes.
    • Le répertoire /usr/X11R6/ contient des fichiers relatifs au système de fenêtrage X Window (bibliothèque, fichiers exécutables, etc.)
    • Le répertoire /usr/share/ contient les ressources partagées par tous les logiciels qui se trouvent dans le répertoire /usr/bin/. Si vous jetez un œil au contenu, vous constaterez qu'un répertoire a été créé pour chaque logiciel. Chacun contient divers éléments propres au logiciel (documentation utilisateur, icônes, etc.). Vous y trouverez aussi des fichiers d'internationalisation (dans /usr/share/locale/). Si vous avez besoin d'aide, vous disposez au choix du répertoire /usr/share/man/ contenant toutes les pages du manuel de commandes (que vous pouvez consulter à l'aide de la commande man), /usr/share/doc/ ou encore /usr/share/info/. Ces derniers étant fournis par les développeurs des différentes applications pour vous aider dans leur découverte et leur utilisation. Dans le répertoire /usr/share/icons/, vous trouverez toutes les icônes et images utilisées dans vos applications favorites, ou par votre environnement de bureau.
    • Le répertoire /usr/local/ peut être assimilé à /usr/. En effet, il contient exactement la même arborescence. Cependant, le répertoire /usr/local/ n'est pas géré par votre gestionnaire de paquets, mais dépend des logiciels que vous installez à partir des sources, ou installés via leur propre mode d'installation.
    • Le répertoire /usr/games/ devrait contenir tous les jeux installés par défaut sur votre système.
    • Le répertoire /usr/src/ est destiné, quant à lui, à accueillir les sources des logiciels qui sont sous licence libre.
    Le répertoire /var Ce dossier renferme les données " variables " liées à la machine : travaux d'impression, traces de connexions HTTP, fichiers journaux, etc. Bien évidemment, la taille de ce répertoire dépend des services lancés par le système. Les journaux système se trouvent dans le répertoire /var/log/. Tous les évènements survenus sur votre système y sont scrupuleusement inscrits (processus de démarrage du système, lancement des services et applications, les problèmes divers, etc.). En fait, chaque fichier de " log " peut être assimilé à un historique. D'ailleurs, il est toujours intéressant de consulter les fichiers de log en cas de plantage ou de dysfonctionnement de votre système. C'est un moyen simple de comprendre ce qu'il s'est passé, et éventuellement de pouvoir résoudre le problème. Le fichier /var/log/messages contient tous les messages d'ordre général concernant les services et les démons. Les heures de connexion et de déconnexion sont aussi inscrites dans ce fichier (même les échecs de connexion). Le répertoire /var/lock/ contient des fichiers, communément appelés fichiers " verrous ". Ces fichiers sont créés par les applications de type serveur (serveur Web, serveur FTP, etc.), de façon à empêcher que les programmes correspondants soient lancés plusieurs fois. Évidemment, ces fichiers sont effacés lorsque les programmes correspondants sont arrêtés. Le répertoire /var/spool/ regroupe les files d'attente des différents services : impression, messagerie électronique, planificateur de tâches, etc.

    Conclusion

    Vous connaissez à présent le rôle de l'essentiel des répertoires qui constituent l'arborescence de votre système de fichiers. Sachez que certaines distributions "étendent" la structure standard afin de prendre en charge certains fichiers spéciaux. Ainsi, la racine de votre système contient peut-être des répertoires qui ne sont pas évoqués ici. Le répertoire /initrd par exemple est un répertoire vide, utilisé comme point de montage pendant le processus de démarrage du système. Il est donc très important. Modifier l'un ou l'autre des fichiers évoqués dans cet article, et notamment les fichiers de configuration du système, peut être catastrophique lorsque l'on s'y prend mal, et votre système pourrait devenir inutilisable. Si vous souhaitez apporter l'une ou l'autre modification sur un fichier du système, il est toujours plus prudent d'en effectuer une copie au préalable. De cette manière vous pourrez toujours récupérer le fichier initial en cas de problème... Références
    Vous souhaitez commenter cet article ?
    Brèves Flux RSS
    Édito : GNU/Linux Magazine Hors-Série N°72
    Édito : Linux Pratique N°84
    Édito : MISC N°74
    Édito : GNU/Linux Magazine N°173
    Édito : MISC Hors-Série N°9
    Communication RSS Com. RSS Presse
    HACKITO ERGO SUM
    GNU/Linux Magazine, partenaire du SymfonyLive Paris
    Opensilicium, partenaire de RTS EMBEDDED
    Linux Pratique et Linux Essentiel, Partenaire de l’Open World Forum
    Gnu/Linux Magazine, Partenaire des JDEV 2013
    Rechercher un article dans notre base documentaire :
    En kiosque Flux RSS

    Le tout nouveau GNU/Linux Magazine HS est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau Linux Pratique est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau Misc est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau GNU/Linux Magazine est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...

    Le tout nouveau Open Silicium est disponible dès maintenant chez votre marchand de journaux et sur notre site marchand.

    Découvrez le sommaire de ce numéro et un aperçu de ce magazine...

    Lire la suite...