Aller au contenu
Administration Linux medium

L'arborescence Linux et le FHS

15 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/ 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.

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 tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn