CURSUS D'INGÉNIERIE SYSTÈME & ADMINISTRATION LINUX
Le Grand Manuel de la Ligne de Commande & l'Architecture du Noyau
Un cours dense, progressif et sans compromis pour comprendre réellement comment Linux respire : de la géométrie des inodes et des descripteurs de fichiers jusqu'aux tunnels cryptographiques Ed25519, aux démons systemd et à l'isolation noyau par Bubblewrap.
L'Anatomie de l'Arborescence : Pourquoi « Tout est Fichier »
Sous Linux, un disque dur, une prise réseau, un processus en mémoire vive ou un générateur aléatoire se manipulent tous à travers une même abstraction : le descripteur de fichier et l'inode.
1.1 La carte stratégique de la racine (/)
Contrairement aux systèmes qui dispersent les volumes par lettres de lecteur, Linux assemble toutes les partitions dans un arbre unique enraciné en / :
Répertoire
Rôle architectural
Commandes d'inspection clés
/etc
Configurations statiques du système et des démons (Apache, SSH, systemd).
ls -la /etc/apache2/sites-enabled
/var
Données variables : journaux (/var/log), sites web (/var/www), caches.
du -xhd1 /var | sort -hr
/proc
Système de fichiers virtuel en RAM exposant le noyau et les processus en direct.
cat /proc/meminfo | head -n 8
/tmp & /run
Espaces volatils (souvent montés en tmpfs dans la RAM) effacés au redémarrage.
df -h /tmp /run
1.2 Le secret de l'inode : Lien dur vs Lien symbolique, et l'énigme du disque plein
Un nom de fichier n'est qu'une étiquette pointant vers un numéro d'inode (la structure qui contient réellement les blocs sur le disque, les permissions et le compteur de références). Tant qu'un processus garde un fichier ouvert en mémoire, son compteur de références reste supérieur à zéro : même si vous supprimez le fichier, l'espace disque n'est pas libéré !
Inspection des inodes et des fichiers fantômes
# Afficher le numéro d'inode (-i) de chaque fichier :
ls -li /var/www/
# Créer un lien symbolique (pointe vers le chemin, traverse les partitions) :
ln -s /etc/apache2/sites-available/site.conf /etc/apache2/sites-enabled/site.conf
# Débusquer les fichiers supprimés (Link count < 1) qui saturent encore le disque :
sudo lsof +L1
Règle d'or de l'Architecte : Avant de supprimer ou d'écraser un fichier de configuration ou un gabarit existant, créez systématiquement une copie horodatée ou suffixée en .original.<ext> avec cp -a fichier.conf fichier.original.conf (le drapeau -a préserve propriétaires, permissions et horodatages).
Chapitre 02 // Contrôle d'Accès & Secrets
Permissions Octales, Bit X Majuscule et Sanctuaire des Secrets
Maîtriser la triade Propriétaire (u), Groupe (g) et Autres (o) sans jamais ouvrir de brèche en production.
2.1 La géométrie binaire 4 - 2 - 1
Chaque chiffre octal additionne trois puissances de deux : Lecture (r = 4), Écriture (w = 2) et Exécution/Traversée (x = 1). Sur un répertoire, le bit x signifie « le droit de traverser le dossier avec cd ».
Permissions de production pour un serveur Web et un coffre de secrets
# 1. Verrouiller un dossier de secrets (.a/ ou ~/.ssh/) pour le propriétaire seul :
chmod 700 .a
chmod 600 .a/*
# 2. Le secret du 'X' majuscule : donne +x aux DOSSIERS mais laisse les fichiers en 644 !
chown -R www-data:www-data /var/www/site
chmod -R u=rwX,go=rX /var/www/site
Hygiène absolue des secrets : Lorsqu'un projet contient un dossier de clés ou de mots de passe (comme .a/), n'affichez jamais son contenu dans un terminal ou un journal IA. Faites-le lire en interne par un script dédié (via SSH_ASKPASS) et excluez-le de toute recherche récursive avec grep --exclude-dir=.a.
APPRENDRE EN COHORTE GUIDÉE // BOOTCAMP.EVENTS
Passez de la théorie à la maîtrise réelle en 30 minutes par jour
Rejoignez nos parcours intensifs québécois : défis quotidiens sur ephemeride.bootcamp.day, durcissement serveur sur securite.bootcamp.day et événements en direct sur bootcamp.events.
Tuyaux Unix (|), Redirections et Parallélisation avec xargs
La philosophie Unix tient en une phrase : écrire des programmes qui font une seule chose à la perfection et qui se parlent par des flux de texte.
3.1 Les trois canaux standards : stdin (0), stdout (1) et stderr (2)
Lorsqu'une commande parcourt le disque, les erreurs de permission polluent l'affichage sur le canal 2 (stderr). Les séparer proprement du résultat utile (canal 1) est le premier geste d'un pipeline propre.
Pipelines d'analyse de journaux et exécution parallèle à 10 travailleurs
# Extraire les 10 adresses IP les plus actives dans un journal Apache :
awk '{print $1}' /var/log/apache2/access.log | sort | uniq -c | sort -nr | head -n 10
# Chercher un motif sans lire .a ni .git et en ignorant les erreurs de permission :
grep -rn --exclude-dir=.a --exclude-dir=.git "VirtualHost" /etc/apache2/ 2>/dev/null
# Vérifier 50 domaines en parallèle (10 processus simultanés avec xargs -P 10) :
cat domaines.txt | xargs -P 10 -I {} curl -sI -m 10 "https://{}/"
SSH à Courbe Elliptique Ed25519, Tunnels et Vérification DNS/TLS
Déployer des applications, inspecter les ports en écoute et tester un certificat HTTPS avant même que le cache DNS mondial ne soit propagé.
4.1 Clés Ed25519, tunnels de port et synchronisation atomique
Trousse réseau de l'Architecte
# 1. Interroger le serveur de noms faisant autorité (comme le fait Let's Encrypt) :
serveurNoms="$(dig +short NS linux.help | head -1)"
dig +short @"$serveurNoms" linux.help A
# 2. Tester un site HTTPS directement sur l'IP du serveur sans attendre le cache DNS :
curl -sI --resolve linux.help:443:139.177.199.211 https://linux.help/
# 3. Ouvrir un tunnel SSH chiffré vers une base de données distante (port 5432) :
ssh -L 15432:127.0.0.1:5432 utilisatrice@serveur -N
Chapitre 05 // Noyau, Démons & Mémoire Vive
Gérer systemd, les Signaux Unix et Protéger un Processus d'earlyoom
Comprendre la différence entre une terminaison courtoise (SIGTERM 15) et une exécution immédiate par le noyau (SIGKILL 9), et ajuster la priorité OOM.
5.1 Diagnostic mémoire et bouclier contre l'OOM Killer
Lorsque la mémoire vive (RAM) et le swap approchent de la saturation, le noyau Linux ou le démon earlyoom choisit un processus à sacrifier selon son score dans /proc/<pid>/oom_score_adj (de -1000 intouchable à +1000 sacrifié en premier).
Inspection systemd et protection contre earlyoom
# Afficher les processus classés par risque d'arrêt OOM :
ps -eo pid,oom_score,oom_score_adj,%mem,comm --sort=-oom_score | head -n 12
# Protéger un processus critique en cours d'exécution (ex: votre orchestrateur IA) :
sudo choom -p "$(pgrep -f mon-processus)" -n -800
# Vérifier la syntaxe Apache avant de recharger sans couper les connexions actives :
sudo apache2ctl configtest && sudo systemctl reload apache2
CULTURE DU TERMINAL // LINUX.COOKING & 5MINUTES.BOOTCAMP.DAY
Et si vous cuisiniez vos recettes exactement comme vous écrivez vos scripts ?
Visitez notre site jumeau linux.cooking (Mijote.sh) pour découvrir des recettes versionnées en ligne de commande, ou relevez un défi express sur 5minutes.bootcamp.day.
L'Art du Script Bash Antifragile (set -euo pipefail et trap)
Par défaut, Bash continue d'exécuter un script même lorsqu'une commande échoue ou qu'une variable est vide. Voici le squelette canonique d'un script de niveau production.
Modèle de script de déploiement avec sauvegarde et nettoyage automatique
#!/bin/bash
# -e : arrête à la 1re erreur | -u : interdit les variables non définies | -o pipefail : capte les erreurs dans les tuyaux
set -euo pipefail
repertoireScript="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
archiveTemp="$(mktemp --suffix=.tar.gz)"
# Garantit la suppression du fichier temporaire même en cas d'interruption (Ctrl+C ou erreur) :
trap 'rm -f "$archiveTemp"' EXIT
tar -czf "$archiveTemp" -C "$repertoireScript" --exclude='./.a' --exclude='./.git' .
echo "Archive prête et intègre : $archiveTemp"
Chapitre 07 // Sécurité de Rupture & Agents Autonomes
Confinement Noyau Léger avec Bubblewrap (bwrap) et Podman
Comment faire tourner un script tiers ou un agent IA autonome en lui offrant tous les outils de base tout en lui interdisant physiquement de modifier le système hôte.
Plutôt que de lancer une machine virtuelle lourde, Bubblewrap utilise les espaces de noms utilisateur (user namespaces) du noyau Linux pour construire en quelques millisecondes une vue sur mesure où la racine / est montée en lecture seule :
Bac à sable hermétique avec racine en lecture seule
Cliquez sur la bonne réponse pour chacune de ces 3 situations réelles de production :
1. Quelle option de chmod rend les sous-répertoires traversables (+x) sans rendre exécutables les fichiers HTML/texte ordinaires ?
2. Votre partition /var affiche 100 % dans df -h après la suppression d'un gros fichier de log, mais l'espace ne revient pas. Quelle commande révèle le processus qui retient encore l'inode ouvert ?
3. Comment tester le certificat HTTPS d'un domaine sur votre serveur 139.177.199.211 avant même que le DNS local ne soit mis à jour ?