Aller au contenu
Administration Linux medium

L'arborescence Linux et le FHS

16 min de lecture

Un fichier de configuration a disparu après une mise à jour, un service écrit ses logs dans un endroit inattendu, un disque /var est plein sans raison évidente — ces situations sont quotidiennes en administration Linux. La réponse est presque toujours la même : savoir où Linux range chaque type de fichier.

Le Filesystem Hierarchy Standard (FHS) est la convention qui définit cette organisation. Pensez-y comme le plan d’un immeuble de bureaux : chaque étage a une fonction précise (accueil, archives, bureaux, local technique). Si vous connaissez le plan, vous trouvez immédiatement ce que vous cherchez.

  • Identifier le rôle de chaque zone fonctionnelle de l’arborescence (/etc/, /var/, /usr/, /run/…)
  • Savoir où chercher configuration, journaux, binaires et données d’exécution
  • Distinguer les particularités entre distributions (Debian/Ubuntu, RHEL/Rocky, Alpine)
  • Diagnostiquer un problème en ciblant le bon répertoire
  • Éviter les erreurs classiques de placement de fichiers

Avant d’entrer dans le détail, voici la table de décision qu’un administrateur utilise au quotidien :

Vous cherchez…Regardez dans…Commande rapide
La configuration d’un service/etc/ls /etc/<service>/
Les journaux d’un service/var/log/ ou journalctljournalctl -xeu <service>
Un binaire ou une commande/usr/bin/, /usr/sbin/which <commande>
L’état d’exécution (PID, socket)/run/ls /run/<service>/
Les données persistantes d’un service/var/lib/ls /var/lib/<service>/
Un fichier temporaire/tmp/ ou /var/tmp/ls /tmp/
Les fichiers d’un utilisateur/home/<utilisateur>/ls -la /home/<user>/
Les fichiers de démarrage/boot/ls /boot/
Un périphérique (disque, partition)/dev/lsblk

C’est le répertoire le plus consulté par un administrateur. Chaque service installé y dépose sa configuration sous forme de fichiers texte éditables.

Sous-répertoires courants :

CheminContenu
/etc/ssh/Configuration du serveur et du client SSH (sshd_config, clés host)
/etc/systemd/Surcharges locales des unités systemd
/etc/apt/ ou /etc/yum.repos.d/Sources de paquets (Debian/Ubuntu ou RHEL/Rocky)
/etc/netplan/ ou /etc/NetworkManager/Configuration réseau persistante
/etc/fstabTable des montages persistants
/etc/passwd, /etc/shadow, /etc/groupComptes utilisateurs et groupes
/etc/sudoers, /etc/sudoers.d/Règles de délégation de privilèges
/etc/logrotate.d/Règles de rotation des journaux
/etc/crontab, /etc/cron.d/Tâches planifiées système
Fenêtre de terminal
# Lister les sous-répertoires de /etc pour voir les services configurés
ls -d /etc/*/

Guides associés : Utilisateurs et groupes, sudo, Montage persistant, systemd.

/var/ stocke tout ce qui change au fil du temps : journaux, caches, files d’attente, bases de données de services.

CheminContenuPourquoi c’est important
/var/log/Journaux système et applicatifsPremier endroit à consulter lors d’un incident
/var/lib/État persistant des services (BDD, paquets)Ne pas supprimer sans comprendre
/var/cache/Caches des gestionnaires de paquetsNettoyable pour récupérer de l’espace
/var/spool/Files d’attente (impression, mail, cron)Rarement modifié manuellement
/var/tmp/Fichiers temporaires persistants entre rebootsPlus durable que /tmp/

C’est la mine d’or du diagnostic. Le contenu varie selon la distribution :

FichierContenu
/var/log/syslogMessages système généraux
/var/log/auth.logConnexions, authentification, sudo
/var/log/dpkg.logInstallations et mises à jour APT
/var/log/kern.logMessages du noyau
/var/log/apache2/Logs Apache (si installé)
Fenêtre de terminal
# Voir l'espace occupé par les journaux
du -sh /var/log/
# Vérifier l'espace restant sur la partition
df -h /var
# Lire les dernières entrées du journal système
journalctl -n 50 --no-pager

Guides associés : Journaux avec journalctl, Rotation avec logrotate, Contrôler l’espace disque.

/usr/ — binaires, bibliothèques et documentation

Section intitulée « /usr/ — binaires, bibliothèques et documentation »

/usr/ contient la majorité des programmes et bibliothèques installés par le gestionnaire de paquets. C’est le cœur applicatif du système.

CheminContenu
/usr/bin/Commandes utilisateur (ls, grep, systemctl, vim…)
/usr/sbin/Commandes d’administration (fdisk, useradd, iptables…)
/usr/lib/Bibliothèques partagées (.so) et fichiers de support
/usr/lib/systemd/Unités systemd fournies par les paquets (ne pas modifier ici)
/usr/share/Documentation, fichiers indépendants de l’architecture
/usr/local/Logiciels installés manuellement (hors gestionnaire de paquets)
Fenêtre de terminal
# Vérifier que /bin est bien un lien vers /usr/bin
ls -ld /bin /sbin
# Trouver où se situe une commande
which systemctl
type -a ls
# Voir les bibliothèques utilisées par un programme
ldd /usr/bin/ls

Ces deux répertoires servent aux logiciels installés en dehors du gestionnaire de paquets, mais avec des conventions différentes :

RépertoireUsageExemple
/opt/<éditeur>/Application tierce complète, auto-contenue/opt/google/chrome/, /opt/jetbrains/
/usr/local/bin/Binaire compilé ou téléchargé manuellementScript maison, outil Go/Rust compilé

Guide associé : Gérer les paquets.

/run/, /proc/, /sys/ — données d’exécution volatiles

Section intitulée « /run/, /proc/, /sys/ — données d’exécution volatiles »

Ces trois répertoires ne sont pas sur disque. Leur contenu est généré dynamiquement par le noyau et disparaît au reboot.

RépertoireSupportContenu
/run/tmpfsPID files, sockets, verrous, état runtime des services
/proc/procfsVue virtuelle sur les processus et le noyau
/sys/sysfsVue virtuelle sur le matériel et les pilotes
Fenêtre de terminal
# Voir le PID d'un service via /run
cat /run/sshd.pid 2>/dev/null || echo "Fichier PID absent (service arrêté ou géré par systemd)"
# Lire des informations sur le CPU via /proc
cat /proc/cpuinfo | head -20
# Voir la mémoire totale
cat /proc/meminfo | grep MemTotal
# Lire un paramètre noyau via /sys
cat /sys/block/sda/queue/scheduler 2>/dev/null

Guide associé : Gérer les processus.

/home/, /root/, /srv/ — données utilisateur et services

Section intitulée « /home/, /root/, /srv/ — données utilisateur et services »
RépertoirePropriétaireContenu
/home/<user>/L’utilisateurFichiers personnels, config locale (~/.bashrc, ~/.ssh/)
/root/rootLe home de root (ne pas confondre avec /)
/srv/ServicesDonnées servies par la machine (sites web, dépôts, partages)
Fenêtre de terminal
# Voir l'espace occupé par chaque utilisateur
du -sh /home/*/
# Vérifier les droits du home de root
ls -ld /root/

Guide associé : Utilisateurs et groupes.

/dev/, /mnt/, /media/ — périphériques et montage

Section intitulée « /dev/, /mnt/, /media/ — périphériques et montage »
RépertoireContenu
/dev/Fichiers spéciaux représentant les périphériques (disques, terminaux, null, random)
/mnt/Point de montage temporaire pour l’administrateur
/media/Point de montage automatique pour les supports amovibles (USB, CD)

Fichiers /dev/ courants :

PériphériqueReprésente
/dev/sda, /dev/sdbDisques SATA/SAS
/dev/nvme0n1Disque NVMe
/dev/vdaDisque virtio (VM KVM)
/dev/nullPuits sans fond (redirigez-y ce que vous voulez ignorer)
/dev/zeroSource infinie de zéros
/dev/random, /dev/urandomGénérateurs de nombres aléatoires
/dev/tty*, /dev/pts/*Terminaux
Fenêtre de terminal
# Lister les disques et partitions
lsblk
# Voir les périphériques bloc disponibles
ls -l /dev/sd* /dev/nvme* /dev/vd* 2>/dev/null

Guides associés : Vue d’ensemble du stockage, Identifier les disques, Montage persistant.

/boot/ contient le noyau Linux, l’initramfs et la configuration du chargeur de démarrage. C’est un répertoire critique — une modification maladroite peut empêcher le système de démarrer.

FichierRôle
vmlinuz-*Noyau Linux compressé
initrd.img-* / initramfs-*Image du système de fichiers initial (pilotes, LVM, chiffrement)
grub/Configuration du chargeur GRUB2
config-*Options de compilation du noyau
System.map-*Table des symboles du noyau (debug)
Fenêtre de terminal
# Voir les noyaux installés
ls -lh /boot/vmlinuz-*
# Voir l'espace occupé par /boot
df -h /boot

Guide associé : Démarrage et reboot.

RépertoireDurée de vieNettoyage
/tmp/Jusqu’au prochain reboot (souvent tmpfs en RAM)Automatique au reboot, ou par systemd-tmpfiles
/var/tmp/Persistant entre rebootsNettoyé périodiquement (30 jours par défaut)
Fenêtre de terminal
# Vérifier si /tmp est en RAM (tmpfs)
df -Th /tmp
# Voir les fichiers temporaires les plus volumineux
du -sh /tmp/* 2>/dev/null | sort -rh | head -10

Le FHS est un standard, mais chaque famille de distributions a ses particularités :

AspectDebian / UbuntuRHEL / Rocky / FedoraAlpine
Journal système/var/log/syslog/var/log/messages/var/log/messages
Logs d’authentification/var/log/auth.log/var/log/secure/var/log/messages
Logs paquets/var/log/dpkg.log/var/log/dnf.log
Config réseau/etc/netplan//etc/NetworkManager//etc/network/
Config paquets/etc/apt//etc/yum.repos.d//etc/apk/
Init (PID 1)systemdsystemdOpenRC
usr-merge✅ (Debian 12+)✅ (RHEL 9+)❌ (séparé)

Ces commandes ne modifient rien. Elles vous aident à vérifier votre compréhension.

  1. Repérer les zones fonctionnelles

    Fenêtre de terminal
    # Voir les répertoires racine
    ls -ld /etc /var /usr /run /proc /sys /boot /tmp /home /dev /srv /opt
  2. Identifier les fichiers de configuration d’un service

    Fenêtre de terminal
    # Exemple avec SSH
    ls -la /etc/ssh/
    cat /etc/ssh/sshd_config | head -30
  3. Trouver où un service stocke ses données

    Fenêtre de terminal
    # Données persistantes
    ls /var/lib/ | head -20
    # Journaux
    ls /var/log/ | head -20
  4. Vérifier les systèmes de fichiers virtuels

    Fenêtre de terminal
    # /proc et /sys ne sont pas sur disque
    df -Th /proc /sys /run /tmp
  5. Confirmer le usr-merge

    Fenêtre de terminal
    # Sur une distribution moderne, /bin est un lien
    ls -ld /bin /sbin /lib
SymptômeCause probableSolution
No space left on device sur /varJournaux ou caches trop volumineuxdu -sh /var/log/* | sort -rh, puis journalctl --vacuum-size=500M ou apt clean
Fichier de config modifié mais pas pris en compteÉdité dans /usr/lib/systemd/ au lieu de /etc/systemd/system/Créer une surcharge dans /etc/ et relancer systemctl daemon-reload
Commande introuvable après installation manuelleBinaire placé hors du PATHDéplacer vers /usr/local/bin/ ou ajouter le chemin au PATH
/boot plein, impossible de mettre à jour le noyauAnciens noyaux non purgésapt autoremove (Debian) ou dnf remove --oldinstallonly (RHEL)
Fichier temporaire disparu après rebootPlacé dans /tmp/ (tmpfs, vidé au reboot)Utiliser /var/tmp/ pour les fichiers qui doivent survivre au reboot
Permission denied sur un fichier dans /run/Fichier PID/socket appartenant à un autre serviceVérifier le propriétaire avec ls -la /run/<fichier> — ne pas modifier les droits manuellement

Contrôle de connaissances

Validez vos connaissances avec ce quiz interactif

10 questions
5 min.
80% requis

Informations

  • Le chronomètre démarre au clic sur Démarrer
  • Questions à choix multiples, vrai/faux et réponses courtes
  • Vous pouvez naviguer entre les questions
  • Les résultats détaillés sont affichés à la fin

Lance le quiz et démarre le chronomètre

  • Le FHS organise Linux en zones fonctionnelles : /etc/ pour la configuration, /var/ pour les données variables, /usr/ pour les binaires, /run/ pour l’exécution volatile.
  • Trois réflexes d’administration : config → /etc/, problème → /var/log/ ou journalctl, runtime → /run/.
  • Ne modifiez jamais les fichiers dans /usr/lib/ : créez une surcharge dans /etc/.
  • /proc/, /sys/ et /run/ sont virtuels — ne les incluez pas dans vos sauvegardes.
  • /tmp/ est vidé au reboot. Utilisez /var/tmp/ pour les fichiers temporaires persistants.
  • Les journaux système varient selon la distribution : syslog et auth.log sur Debian/Ubuntu, messages et secure sur RHEL/Rocky.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn