Skip to Content

Chapitre 2.2 — Le système de fichiers

⏱️ TL;DR — Sous Linux, il n’y a pas de C:\ ni de D:\. Tout part d’un seul point, la racine /, et se déploie en un arbre unique. Chaque dossier de haut niveau a un rôle codifié par le FHS (Filesystem Hierarchy Standard) : /etc la config, /var les données variables (logs, sites web), /home les utilisateurs, /root le dossier de root, /usr les programmes, /tmp le temporaire, /opt les logiciels tiers. Pour un serveur web, trois adresses reviennent sans cesse : la config Nginx dans /etc/nginx, les logs dans /var/log, les sites dans /var/www. Tu apprends aussi à écrire un chemin (absolu depuis / vs relatif depuis où tu es), et les raccourcis ., .., ~.

🎯 Objectifs

  • Comprendre l’arbre unique de Linux et la notion de racine /.
  • Connaître le rôle des grands dossiers du FHS : /etc, /var, /home, /usr, /tmp
  • Savoir où vivent les fichiers d’un serveur web (config, logs, sites).
  • Écrire des chemins absolus et relatifs, et manier ., .., ~.
  • Reconnaître les fichiers cachés (ceux qui commencent par un .).

Un seul arbre, une seule racine

Sur Windows, chaque disque a sa lettre : C:\, D:\, une clé USB en E:\… Sous Linux, ce n’est pas le cas. Il existe un seul arbre, dont le tronc s’appelle la racine et se note / (une simple barre oblique). Tout se trouve quelque part sous / : les programmes, tes fichiers, la config, les logs, et même les autres disques (qu’on greffe — on dit monte — à un endroit de l’arbre plutôt que de leur donner une lettre).

Voici les grands dossiers directement sous la racine, tels que tu les verras sur un Ubuntu ou un Debian :

/ ├── bin/ → commandes de base (souvent un lien vers /usr/bin) ├── boot/ → fichiers de démarrage du système ├── dev/ → les périphériques, vus comme des fichiers ├── etc/ → LA configuration du système et des services ├── home/ → les dossiers personnels des utilisateurs ├── lib/ → bibliothèques partagées ├── opt/ → logiciels tiers installés « à la main » ├── proc/ → système virtuel : infos sur les processus ├── root/ → le dossier personnel de l'utilisateur root ├── sys/ → système virtuel : infos sur le noyau et le matériel ├── tmp/ → fichiers temporaires (nettoyés régulièrement) ├── usr/ → les programmes et leurs données (le gros du système) └── var/ → données VARIABLES : logs, sites web, caches, files d'attente

💡 Réflexe — Ne cherche pas « le disque C ». Demande-toi plutôt : « quel dossier a ce rôle ? ». De la config ? → /etc. Un log ? → /var/log. Un site web ? → /var/www. Le FHS est une convention partagée par toutes les distributions : une fois que tu la connais, tu te repères sur n’importe quel serveur Linux, même un que tu découvres.

Le FHS : à quoi sert chaque dossier

Le FHS (Filesystem Hierarchy Standard) est la norme qui dit quoi va où. En connaître les grandes lignes, c’est savoir où chercher sans tâtonner. Les dossiers qui comptent pour un administrateur de serveur :

DossierRôleExemple concret
/etcConfiguration de tout le système et des services (fichiers texte)/etc/nginx/, /etc/ssh/sshd_config
/varDonnées variables : ce qui grossit et change en fonctionnementlogs, sites, caches, bases
/var/logLes journaux (logs) du système et des services/var/log/nginx/error.log
/var/wwwLes sites web servis par le serveur/var/www/formacampus/
/homeLes dossiers personnels des utilisateurs normaux/home/deploy/
/rootLe dossier personnel de root (pas dans /home)/root/
/usrLes programmes installés et leurs données (lecture seule en usage normal)/usr/bin/, /usr/lib/
/tmpFichiers temporaires, effacés régulièrement (souvent au reboot)scripts jetables, uploads en cours
/optLogiciels tiers installés hors du gestionnaire de paquets/opt/monlogiciel/
/bin, /usr/binLes exécutables des commandes (ls, cp, grep…)/usr/bin/ls

Deux dossiers méritent une note à part : /proc et /sys. Ce ne sont pas de vrais fichiers sur le disque : ce sont des systèmes virtuels générés à la volée par le noyau. En lisant /proc, tu obtiens des infos en temps réel sur les processus et le système (par exemple /proc/meminfo pour la mémoire). C’est comme ça que des outils comme htop ou free savent ce qui se passe. Tu n’y toucheras pas souvent directement, mais sache que ces dossiers ne sont pas « normaux ».

⚠️ Piège — Croire que /etc contient des programmes. Non : /etc ne contient que de la configuration (des fichiers texte). Les programmes sont dans /usr/bin, /bin, /usr/sbin. Confondre les deux fait chercher au mauvais endroit. Moyen mnémotechnique : dans /etc, on règle ; dans /usr, on exécute ; dans /var, ça varie.

Où vivent les choses qui comptent pour un serveur web

Rendons ça concret. Quand tu administres un serveur web, tu passes ta vie dans trois familles de dossiers. Autant les connaître par cœur dès maintenant :

  • La config Nginx est dans /etc/nginx/ — les fichiers sites-available/ et sites-enabled/, le nginx.conf principal. Tu iras là pour dire à Nginx quel domaine sert quelle app (Partie 7).
  • Les logs sont dans /var/log//var/log/nginx/access.log et error.log pour Nginx, et les logs système. Quand « le site plante », c’est le premier endroit où regarder (chapitre 2.4 pour les lire en direct).
  • Les fichiers du site sont souvent dans /var/www/ — le code statique, les assets, parfois l’app elle-même.
/etc/nginx/sites-available/formacampus → la config du site FormaCampus /var/log/nginx/access.log → chaque requête reçue par Nginx /var/log/nginx/error.log → les erreurs de Nginx (ex. 502) /var/www/formacampus/ → les fichiers servis /home/deploy/ → le code déployé de l'app

🧭 Sur FormaCampus — Sur le VPS de FormaCampus, la carte des lieux sera : le code Next.js et l’API Symfony déployés sous /home/deploy/ (le compte de déploiement), la config Nginx qui les met en façade dans /etc/nginx/sites-available/, les logs dans /var/log/nginx/ (et ceux des services applicatifs via journalctl), et la base Postgres dont les données vivent sous /var/lib/postgresql/. Le jour d’un incident, l’équipe sait exactement où aller : logs dans /var/log, config dans /etc. Pas de chasse au trésor.

Chemins absolus et chemins relatifs

Un chemin (path) est l’adresse d’un fichier ou d’un dossier dans l’arbre. Il en existe deux sortes, et bien les distinguer évite beaucoup d’erreurs.

  • Un chemin absolu commence par / (la racine). Il décrit le trajet complet depuis le tronc de l’arbre. Il est sans ambiguïté : il désigne le même fichier d’où que tu sois. Exemple : /var/log/nginx/error.log.
  • Un chemin relatif ne commence pas par /. Il part de là où tu te trouves (ton dossier courant). Exemple : si tu es dans /var/log, le chemin relatif nginx/error.log désigne le même fichier que l’absolu ci-dessus.

Pour manier les chemins relatifs, trois raccourcis sont partout :

RaccourciSignifie
.le dossier courant (là où tu es)
..le dossier parent (un cran au-dessus)
~ton dossier personnel (/home/deploy par exemple)
. → ici même .. → le dossier au-dessus ../.. → deux crans au-dessus ~ → /home/deploy (ton dossier perso) ~/projets → /home/deploy/projets /etc/nginx → chemin absolu, toujours le même

💡 Réflexe — Pour toute action importante ou risquée (supprimer, écraser, déplacer), utilise un chemin absolu. Un chemin relatif dépend de « où tu es », et si tu t’es trompé de dossier, tu agis sur la mauvaise cible. rm /var/www/vieux-site est explicite ; rm vieux-site suppose que tu sais où tu es. En cas de doute, un petit pwd d’abord (chapitre 2.1).

Les fichiers cachés

Sous Linux, un fichier ou un dossier dont le nom commence par un point (.) est caché : il n’apparaît pas dans un listing normal. Ce n’est pas du secret, c’est une convention pour ne pas encombrer l’affichage avec de la config qu’on ne consulte pas tout le temps.

Tu en croiseras beaucoup, surtout dans les dossiers personnels :

.bashrc → la config de ton shell bash .ssh/ → tes clés et ta config SSH (dossier caché) .env → les variables d'environnement d'une app (secrets !) .gitignore → ce que git doit ignorer

Pour voir les fichiers cachés, on ajoute l’option -a (all) à la commande de listing : ls -a. On détaille ça au chapitre suivant.

🔒 Sécurité — Le dossier caché ~/.ssh/ contient tes clés SSH et le fichier authorized_keys qui décide qui peut se connecter au serveur. Le fichier .env d’une app contient souvent des secrets (mots de passe de base de données, clés d’API). Le fait qu’ils soient « cachés » ne les protège pas : la vraie protection, ce sont les permissions (Partie 3) et le fait de ne jamais les committer dans git. « Caché » veut juste dire « pas affiché par défaut », pas « sécurisé ».

✏️ Exercices

Exercice 1 — Range chaque fichier. Pour chacun, dis dans quel grand dossier du FHS tu t’attends à le trouver : (a) le fichier de config du serveur SSH ; (b) le journal des erreurs de Nginx ; (c) le dossier personnel de l’utilisateur deploy ; (d) l’exécutable de la commande ls.

✅ Solution

(a) La config SSH → /etc (précisément /etc/ssh/sshd_config) : /etc regroupe la configuration. (b) Le log d’erreurs Nginx → /var/log (précisément /var/log/nginx/error.log) : /var pour les données variables, dont les logs. (c) Le dossier de deploy/home (précisément /home/deploy). (d) L’exécutable ls/usr/bin (ou /bin, souvent un lien vers /usr/bin) : les commandes sont des programmes.

Exercice 2 — Absolu ou relatif ? Tu te trouves dans /var/log/nginx. Écris le chemin de /var/log/nginx/error.log de deux façons : en absolu, et en relatif depuis ta position. Puis donne le chemin relatif pour remonter jusqu’à /var/log.

✅ Solution

Absolu : /var/log/nginx/error.log (commence par /, valable de partout). Relatif depuis /var/log/nginx : simplement error.log (le fichier est dans le dossier courant). Pour remonter à /var/log : .. (le dossier parent, un cran au-dessus). Pour désigner error.log en passant par le parent puis en redescendant : ../nginx/error.log — plus long, mais valide.

Exercice 3 — Les cachés. Un dev se plaint : « mon .env a disparu, ls ne le montre plus ! ». Que lui réponds-tu, et quelle commande lui fais-tu taper ?

✅ Solution

Son .env n’a pas disparu : il commence par un point, c’est donc un fichier caché que ls n’affiche pas par défaut. Il faut ajouter l’option -a (all) : ls -a (ou ls -la pour aussi voir les détails). Le fichier réapparaît. Rien n’est perdu — c’est juste la convention Linux des noms commençant par ..

🧠 Quiz de révision

1. Où commence l’arbre des fichiers sous Linux, et comment le note-t-on ?

À la racine, notée / (une barre oblique). Il n’y a pas de lettres de lecteur (C:\, D:\) : un seul arbre unique, sous lequel tout se trouve, y compris les autres disques (montés à un endroit de l’arbre).

2. Que contient le dossier /etc ?

La configuration du système et des services, sous forme de fichiers texte (par exemple /etc/nginx/, /etc/ssh/sshd_config). Pas de programmes : ceux-ci sont dans /usr/bin, /bin, etc.

3. Pour un serveur web, où trouve-t-on la config Nginx, les logs et les sites ?

La config Nginx dans /etc/nginx/, les logs dans /var/log/ (dont /var/log/nginx/), et les sites souvent dans /var/www/. Ce sont les trois adresses à connaître par cœur pour administrer et dépanner.

4. Quelle est la différence entre un chemin absolu et un chemin relatif ?

Un chemin absolu commence par / et décrit le trajet complet depuis la racine — il désigne le même fichier d’où que tu sois. Un chemin relatif ne commence pas par / et part de ton dossier courant. On préfère l’absolu pour les actions risquées.

5. Qu’est-ce qu’un fichier caché, et comment l’afficher ?

Un fichier (ou dossier) dont le nom commence par un point (.bashrc, .env, .ssh/). Il n’apparaît pas dans un listing normal — c’est une convention d’affichage, pas une protection. On l’affiche avec ls -a (all).


Chapitre suivant : Naviguer & manipuler — maintenant qu’on a la carte, on apprend à se déplacer et à créer, copier, déplacer et supprimer sans se tromper de cible.

Last updated on