vault backup: 2026-02-28 16:19:38

This commit is contained in:
2026-02-28 16:19:38 +01:00
parent f7ff4527fc
commit b5636a7b5f

View File

@@ -0,0 +1,220 @@
---
title: "Comprendre le Standard FHS : La boussole de l'administrateur Linux"
description:
tags: []
date: 2026-02-28 12:53
lastmod: 2026-02-28 13:13
type:
category:
status:
---
# Comprendre le Standard FHS : La boussole de l'administrateur Linux
Si vous installez une Debian, une RedHat ou une Arch Linux, vous retrouverez toujours la même structure à la racine (`/`). Ce n'est pas un hasard, c'est le **FHS**. Son but ? Permettre aux logiciels et aux administrateurs de savoir exactement où chercher (ou stocker) une information.
## Les dossiers du Système (Le "Moteur")
Ces répertoires sont essentiels pour que la machine puisse démarrer et fonctionner.
- **`/boot`** : Contient tout ce qui est nécessaire au démarrage (le noyau Linux `vmlinuz`, le chargeur GRUB). Comme le disait Sabrine dans ton extrait, c'est vital pour le "Disaster Recovery".
- **`/etc`** : **Le dossier le plus important pour un admin.** Il contient tous les fichiers de configuration du système et des services (Apache, SSH, réseau). C'est du texte pur, facile à sauvegarder.
- **`/bin` et `/sbin`** : Les commandes de base (ls, cp, mkdir). `/sbin` est réservé aux commandes d'administration (système).
> _Note : Sur les distributions modernes, ces dossiers sont souvent des liens symboliques vers `/usr/bin`._
- **`/lib`** : Les bibliothèques partagées indispensables au démarrage des programmes situés dans `/bin` et `/sbin`.
## Les dossiers de Données et Utilisateurs
- **`/home`** : Le territoire des utilisateurs. Chaque utilisateur y a son sous-dossier (`/home/toto`) pour ses documents et ses réglages personnels.
- **`/root`** : Le "home" de l'administrateur (root). On le sépare des autres pour pouvoir monter `/home` sur une partition différente sans bloquer l'admin en cas de souci.
- **`/usr`** : (**User System Resources**) C'est là que sont installés la majorité des programmes, des icônes et de la documentation. C'est souvent la partie la plus volumineuse du système.
## Les dossiers Variables et Temporaires
C'est ici que ça bouge tout le temps.
- **`/var`** : (**Variable**) C'est le cœur des données dynamiques.
- `/var/log` : Les journaux du système (crucial pour le debug).
- `/var/lib` : Les bases de données (MySQL, PostgreSQL).
- `/var/www` : Souvent utilisé pour héberger les sites web.
- **`/tmp`** : Fichiers temporaires. Ils sont souvent supprimés à chaque redémarrage.
## Les dossiers "Matériel" et Virtuels
Linux traite tout comme un fichier, même votre matériel.
- **`/dev`** : Contient les points d'entrée vers les périphériques (disques durs `/dev/sda`, terminaux `/dev/tty`).
- **`/proc` et `/sys`** : Ce ne sont pas de "vrais" dossiers sur le disque. Ce sont des fenêtres sur le noyau et la RAM. Ils permettent de voir l'état du processeur ou des processus en temps réel.
---
## Le royaume de l'amovible (Automatique)
Le répertoire `/media` est une introduction relativement récente dans le standard FHS. Il est géré par le système d'exploitation.
- **Usage :** C'est le point de montage par défaut pour tous les médias **amovibles**.
- **Fonctionnement :** Quand vous branchez une clé USB, un disque dur externe ou un CD-ROM, le système (via des outils comme `udisks` ou votre environnement de bureau GNOME/KDE) crée automatiquement un sous-dossier ici.
- **Exemples :**
- `/media/usb-disk`
- `/media/cdrom`
- `/media/prive/MA_CLE_USB` (sur certaines distributions qui séparent par utilisateur).
> **L'avantage :** C'est "Plug and Play". L'utilisateur n'a pas besoin de taper de commandes pour accéder à ses fichiers.
---
## Le montage temporaire (Manuel)
Le dossier `/mnt` (**Mount**) est historiquement le dossier de l'administrateur système.
- **Usage :** Il est destiné aux montages **manuels et temporaires**.
- **Fonctionnement :** Si vous devez monter une partition de secours pour réparer un système, ou accéder ponctuellement à un fichier image (`.iso`), c'est ici qu'on le fait. Contrairement à `/media`, le système ne crée rien tout seul dans `/mnt`.
- **Exemple de commande :**
`mount /dev/sdb1 /mnt`
> **L'avantage :** Il est "propre". Il ne dépend d'aucun automatisme système, ce qui le rend fiable pour les opérations de maintenance ou de récupération de données.
---
## Et pour les montages permanents ?
Petite précision cruciale pour ton infrastructure : si tu as un deuxième disque dur interne ou un partage réseau (NAS) qui doit être là **à chaque démarrage**, le FHS est un peu plus flou.
Beaucoup d'administrateurs créent leur propre dossier à la racine (ex: `/data` ou `/nas`) ou utilisent des sous-dossiers dans `/mnt` (ex: `/mnt/backup`). Cependant, la tendance "propre" actuelle consiste à utiliser :
- **`/srv`** si ce sont des données servies (comme vu précédemment).
- **`/mnt/nom_du_partage`** pour les montages réseau statiques via le fichier `/etc/fstab`.
---
On ne peut pas parler du standard **FHS** sans évoquer ces deux-là ! Si `/etc` et `/var` sont le cœur du système, `/opt` et `/srv` sont les dossiers du "sur-mesure" et du service pur.
## Les logiciels "tout-en-un" (Add-on Packages)
`/opt` se situe dans une zone grise intéressante : c'est du logiciel (statique), mais comme il n'est pas géré par le système de paquets officiel de ta distribution (APT, DNF), il est beaucoup plus difficile à réinstaller à l'identique. Le nom vient de **Optional**. Ces logiciels ne suivent pas la répartition classique de Linux (éparpiller leurs fichiers dans `/usr/bin`, `/usr/lib`, etc.).
- **Le concept :** Chaque logiciel a son propre sous-répertoire contenant tout ce dont il a besoin (binaires, bibliothèques, configurations).
- **Exemples typiques :** * `Google Chrome` se trouve souvent dans `/opt/google/chrome`.
- Des outils comme `Discord`, `Zoom`, ou des suites de développement comme `Eclipse`.
- **Pourquoi l'utiliser ?** Cela évite de polluer les dossiers système (`/usr`). Si vous supprimez le dossier dans `/opt`, vous supprimez proprement toute l'application.
Dans une politique de sauvegarde sérieuse, `/opt` est souvent sauvegardé au même titre que `/etc` car il contient de "l'intelligence métier" difficile à reconstruire.
---
## Les données de services (Service Data)
Introduit plus tard dans le FHS, le dossier **`/srv`** est destiné à stocker les données relatives aux services offerts par le serveur.
- **Le concept :** Centraliser les données que votre serveur "sert" au monde extérieur.
- **Exemples typiques :**
- `/srv/www` : Pour les fichiers de votre site web (au lieu de `/var/www`).
- `/srv/ftp` : Pour les fichiers accessibles via un serveur FTP.
- `/srv/git` : Pour vos dépôts de code source.
**Pourquoi l'utiliser ?**
Sans `/srv`, ton script de sauvegarde ressemble à une usine à gaz car `/var` un répertoire "fourre-tout" qui mélange le **précieux** (tes données) et le **jetable** (les fichiers temporaires) et il faut faire des choix :
- Sauvegarder `/var/www` (Web)
- Sauvegarder `/var/lib/pgsql` (Base de données)
- Sauvegarder `/var/spool/mail` (Mails)
- **Risque :** Tu oublies le nouveau dossier `/var/lib/mongodb` que ton collègue a installé hier. Résultat : **Perte de données.**
Avec **`/srv`**, tu imposes une règle d'or à ton équipe :
> _"Tout ce qui est produit pour un client va dans /srv"_.
Ton script devient : `sauvegarder /srv`. Si un collègue ajoute un service, il le met dans `/srv/mongodb`. Ton backup le prendra **automatiquement** sans que tu n'aies à modifier une seule ligne de code.
## Les dossiers "Polluants" de `/var`
- **`/var/cache`** : Comme son nom l'indique, c'est du cache. Par exemple, `/var/cache/apt` contient les paquets `.deb` déjà installés. Si ton serveur brûle, tu n'as pas besoin de ces fichiers, tu les retéléchargeras lors de la réinstallation.
- **`/var/tmp`** : Ce sont des fichiers temporaires qui doivent survivre à un redémarrage (contrairement à `/tmp`), mais ils n'ont pas vocation à être sauvegardés.
- **`/var/run` (ou `/run`)** : Ce dossier est vidé à chaque démarrage. Il contient les ID des processus en cours (`.pid`) et des sockets. Sauvegarder cela est totalement inutile, voire dangereux si tu tentes de les restaurer.
- **`/var/lock`** : Contient des fichiers de verrouillage pour empêcher deux programmes d'utiliser le même périphérique. Inutile en sauvegarde.
---
## Pourquoi respecter le FHS ?
Prenons l'exemple de **Frédéric**, qui déplace tout dans `/home`.
Dans Linux, les logiciels ne se "devinent" pas, ils se fient à des chemins prévisibles codés en dur ou configurés par défaut.
- **Le Monitoring (ex: Zabbix, Netdata) :** Il va surveiller `/var/lib/postgresql` pour mesurer la taille de la base. Si elle est dans `/home`, l'alerte de disque plein ne se déclenchera jamais.
- **La Sécurité (ex: SELinux, AppArmor) :** Ce sont des systèmes de contrôle d'accès. Ils ont des règles strictes : _"Le processus Postgres n'a le droit de lire/écrire QUE dans /var/lib/pgsql"_. Si Frédéric déplace les données dans `/home`, SELinux va bloquer Postgres, croyant à une intrusion.
- **Les Mises à jour :** Lors d'une montée de version, le gestionnaire de paquets (`apt` ou `dnf`) va chercher les fichiers de configuration dans `/etc`. S'ils sont ailleurs, il créera de nouveaux fichiers par défaut et votre service ne redémarrera pas avec vos réglages.
Imaginez que Frédéric quitte l'entreprise. Vous arrivez le lundi matin, le serveur est en panne.
- **Scénario Standard (FHS) :** Vous tapez `ls /var/lib/`. Vous voyez `pgsql`. Vous comprenez que c'est un serveur de base de données. Vous regardez `/etc/postgresql/` pour la config. En 5 minutes, vous avez le diagnostic.
- **Scénario Frédéric :** Vous regardez `/var/lib`, c'est vide. Vous pensez que la base a été supprimée. Vous cherchez pendant 1 heure avant de réaliser que tout est caché dans `/home/postgres`. **Bilan :** 1 heure d'interruption de service inutile.
Par définition, `/home` est privé.
- Le dossier `/var/lib/postgresql` est conçu pour être accessible par les services système.
- Le dossier `/home/postgres` est protégé par les masques d'utilisateurs. Si un outil de sauvegarde automatisé (non-root) passe par là, il sera bloqué. Frédéric a créé une **faille de sécurité** en mélangeant données système et espace utilisateur.
En respectant le FHS, vous bénéficiez de l'effet **"LEGO"** :
1. Vous installez un serveur (Debian).
2. Vous branchez un agent de sauvegarde (Veeam).
3. Vous branchez un antivirus (ClamAV).
4. Vous branchez un outil de log (Rsyslog).
**Tout fonctionne instantanément sans aucune configuration manuelle de chemins.**
---