Intermediaire

Systeme et services

Paquets, systemd, stockage LVM, reseau : le coeur operationnel de l'administrateur LPIC-1.

Module 5 Gestion des paquets : APT/DPKG (Debian) et DNF/RPM (RHEL)

1. Deux familles, une logique

  • Debian/Ubuntu : paquets .deb, outil bas niveau dpkg, outil haut niveau apt (resout les dependances).
  • RHEL/Fedora/Rocky : paquets .rpm, outil bas niveau rpm, outil haut niveau dnf (ex-yum).
# Debian / Ubuntu
sudo apt update              # synchronise les index (ne met rien a jour !)
sudo apt upgrade             # met a jour les paquets installes
sudo apt install nginx       # installe + dependances
sudo apt remove nginx        # desinstalle (garde la config)
sudo apt purge nginx         # desinstalle + config
apt search ssh               # recherche
apt show openssh-server      # fiche detaillee
dpkg -l | grep nginx         # inventaire des installes
dpkg -i /tmp/outil.deb       # installe un .deb local
# RHEL / Fedora
sudo dnf check-update
sudo dnf install httpd
sudo dnf remove httpd
sudo dnf search ssh
rpm -qa | grep httpd
 rpm -qi httpd
Pourquoi c'est important : À 2h du matin, une faille critique impose de patcher nginx sur vingt serveurs Debian et RHEL mélangés. Celui qui confond update et upgrade ou qui installe un .deb avec dpkg sans gérer les dépendances casse la production au lieu de la sauver.
L'analogie qui aide : dpkg et rpm sont des monteurs qui posent une seule pièce, tandis que apt et dnf sont des chefs de chantier : ils commandent la pièce, toutes ses dépendances et vérifient que l'ensemble tient debout avant de visser.

2. Depots et cycle de mise a jour

apt update lit /etc/apt/sources.list et /etc/apt/sources.list.d/ ; sans update regulier, apt install propose des versions perimees. Les cles des depots sont dans /etc/apt/trusted.gpg.d/. Sur RHEL, les depots sont des fichiers .repo dans /etc/yum.repos.d/.

ls /etc/apt/sources.list.d/
sudo apt update && sudo apt upgrade -y
 sudo dnf update -y
Démonstration pas à pas : sudo apt update && sudo apt upgrade -yupdate synchronise les index depuis sources.list et affiche le nombre de paquets actualisables ; upgrade télécharge et installe vraiment. apt show openssh-server détaille version et dépendances, dpkg -l | grep nginx vérifie l'installation. Si update échoue, upgrade travaillerait sur un catalogue périmé.
Pièges classiques : apt update seul ne met rien à jour, et apt upgrade sans update installe des versions périmées. remove garde la configuration, seul purge la supprime. dpkg -i échoue sur les dépendances manquantes là où apt install les résout. À l'examen, cite les dépôts Debian dans sources.list et les dépôts RHEL en .repo dans /etc/yum.repos.d/.
À vous de jouer : Quelle différence entre apt remove nginx et apt purge nginx ?
Voir la réponse

remove désinstalle en conservant les fichiers de configuration, purge supprime aussi la configuration. Pour repartir de zéro, utilise purge.

Points d'examen (101-500) : update (index) vs upgrade (paquets), remove vs purge, dpkg -l/-i/-s, rpm -qa/-qi, emplacement des listes de depots, pendant dnf de apt install.
5.1apt et dpkg : installer, mettre a jour, purger
5.2dnf, rpm et depots
Module 6 systemd : services, targets, journalctl

1. Unites et commandes du quotidien

systemd pilote des unites (.service, .target, .timer, .mount...). Reflexes : status (etat), start/stop/restart (immediat), enable/disable (au boot), is-enabled/is-active (verification).

systemctl status sshd
sudo systemctl start nginx
sudo systemctl enable nginx
# Created symlink .../multi-user.target.wants/nginx.service
systemctl is-enabled nginx   # enabled
systemctl is-active nginx    # active
sudo systemctl restart sshd
 sudo systemctl disable apache2
Pourquoi c'est important : À 2h du matin, le site est hors ligne après un reboot : nginx est installé mais ne démarre plus tout seul. La cause tient en un mot : il a été lancé avec start mais jamais activé avec enable. Comprendre systemd, c'est garantir que les services survivent au redémarrage.
L'analogie qui aide : systemd est le chef d'orchestre du démarrage : start demande à un musicien de jouer maintenant, enable l'inscrit sur la partition du prochain concert, et la target choisit entre formation réduite en texte ou grand orchestre graphique.

2. Targets : les successeurs des runlevels

  • multi-user.target = ex-runlevel 3 (texte + reseau).
  • graphical.target = ex-runlevel 5 (graphique).
  • rescue.target / emergency.target = maintenance.
  • poweroff / reboot = arret / redemarrage.
systemctl get-default
sudo systemctl set-default multi-user.target
sudo systemctl isolate rescue.target   # bascule immediate (maintenance)
systemctl list-units --type=service --state=running

3. journalctl : les logs centralises

journalctl -b              # boot courant
journalctl -u sshd         # uniquement le service sshd
journalctl -u nginx -f     # suivi temps reel (-f comme tail -f)
journalctl --since "2026-01-12 08:00" --until "2026-01-12 09:00"
journalctl -p err -b       # erreurs du boot
 sudo journalctl --vacuum-time=7d  # menage du journal
Démonstration pas à pas : systemctl status sshd affiche active (running) avec le PID et les dernières lignes du journal : le service tourne. sudo systemctl enable nginx crée un lien dans multi-user.target.wants, preuve qu'il partira au boot. journalctl -u nginx -f suit ensuite les logs en direct : chaque redémarrage y laisse sa trace horodatée.
Pièges classiques : start agit tout de suite mais s'oublie au reboot, enable programme le boot mais ne démarre rien maintenant : en production, il faut souvent les deux. isolate rescue.target coupe les services sans prévenir. journalctl sans -u noie dans tous les services, et -p err seul cache les avertissements qui annoncent la panne.
À vous de jouer : Le service nginx tourne mais ne repart pas après reboot. Quelle commande corrige cela durablement ?
Voir la réponse

sudo systemctl enable nginx : elle crée le lien de démarrage automatique. Vérifie avec systemctl is-enabled nginx qui doit répondre enabled.

Points d'examen (101-500) : enable (boot) vs start (immediat), correspondance targets/runlevels, get-default / set-default / isolate, filtres journalctl -u/-b/-f/-p/--since.
6.1systemctl : status start enable
6.2Targets et runlevels
6.3journalctl : filtrer les journaux
Module 7 Stockage : partitions, LVM, montage et fstab

1. Voir les disques avant d'agir

lsblk
# sda 30G : sda1 20G (/) sda2 10G (/home)
sudo fdisk -l /dev/sda     # table de partitions
blkid                      # UUID + types FS
df -h                      # partitions MONTEES + espace
 du -sh /var/log            # taille d'un dossier
Pourquoi c'est important : À 2h du matin, la partition /data affiche 100 % et l'application refuse les écritures. Sans LVM, il faut déplacer des données un dimanche entier. Avec LVM, tu étends le volume logique en quelques minutes et la production repart sans réinstallation.
L'analogie qui aide : Les disques sont des briques, le groupe de volumes un réservoir commun, et les volumes logiques des cloisons amovibles : tu pousses un mur sans toucher aux fondations, là où les partitions classiques sont des murs en béton impossibles à déplacer.

2. LVM en trois couches : PV - VG - LV

LVM decouple le stockage physique du decoupage logique : on empile des PV (physical volumes = partitions/disques), on les regroupe en VG (volume group = reservoir), on y taille des LV (logical volumes = partitions logiques extensibles), puis mkfs + mount.

sudo pvcreate /dev/sdb1
sudo vgcreate vgdata /dev/sdb1
sudo lvcreate -L 5G -n lvdata vgdata
sudo mkfs.ext4 /dev/vgdata/lvdata
sudo mkdir -p /data
sudo mount /dev/vgdata/lvdata /data
pvdisplay && vgdisplay && lvdisplay

3. /etc/fstab : les montages persistants

Format : peripherique point type options dump pass. On prefere l'UUID au nom (/dev/sda1 peut changer). Apres edition : mount -a pour tester avant de rebooter (un fstab faux = boot en maintenance).

cat /etc/fstab
UUID=aaa-111  /      ext4  defaults  0 1
UUID=bbb-222  /home  ext4  defaults  0 2
/dev/vgdata/lvdata /data ext4 defaults 0 2
 sudo mount -a && echo "fstab OK"
Démonstration pas à pas : pvcreate /dev/sdb1 marque le disque comme brique LVM ; vgcreate vgdata /dev/sdb1 crée le réservoir vgdata ; lvcreate -L 5G -n lvdata vgdata y taille une cloison de 5 Go ; mkfs.ext4 /dev/vgdata/lvdata pose le système de fichiers ; mount /dev/vgdata/lvdata /data le rend visible. mount -a après édition de fstab confirme que le montage survivra au reboot.
Pièges classiques : Oublier mkfs avant mount produit une erreur obscure. Utiliser /dev/sda1 au lieu de l'UUID dans fstab expose à un montage sur le mauvais disque après ajout matériel. Rebooter sans mount -a de test envoie la machine en mode maintenance. À l'examen : df ne voit que le monté, du mesure un dossier, lsblk montre l'arbre, et l'ordre PV puis VG puis LV est intangible.
À vous de jouer : Dans quel ordre crée-t-on un volume LVM utilisable jusqu'au montage ?
Voir la réponse

pvcreate puis vgcreate puis lvcreate, ensuite mkfs et mount, enfin entrée en fstab validée par mount -a.

Points d'examen (102-500) : ordre PV - VG - LV, commandes pvcreate/vgcreate/lvcreate + mkfs + mount, les 6 champs de fstab, pourquoi l'UUID, mount -a comme test, df (monte) vs du (dossier) vs lsblk (arbre).
7.1lsblk blkid fdisk df du
7.2LVM : PV VG LV
7.3fstab et mount -a
Module 8 Reseau Linux : ip, ss, resolv.conf, pare-feu

1. iproute2 a remplace net-tools

ifconfig et netstat sont obsoletes : utilisez ip et ss. Examen piege classique.

ip addr                    # adresses IPv4/IPv6 des interfaces
ip -4 addr show eth0
ip route                   # table de routage
sudo ip route add default via 192.168.1.1
ip link                    # etat des interfaces (UP/DOWN)
ss -tlnp                   # ports TCP en ecoute + processus
 ss -tupn                   # TCP + UDP
Pourquoi c'est important : À 2h du matin, plus personne n'atteint l'application mais le serveur semble allumé. En deux commandes, ip route révèle une passerelle perdue et ss -tlnp montre que le port 443 n'écoute plus. Le réseau se diagnostique, il ne se devine pas.
L'analogie qui aide : ip addr donne l'adresse de chaque maison, ip route la carte des carrefours, /etc/resolv.conf l'annuaire qui traduit les noms en adresses, et ss la liste des guichets ouverts avec le service qui tient derrière chacun.

2. Noms, DNS et connectivite

  • /etc/hostname : nom de la machine.
  • /etc/hosts : resolutions locales prioritaires (127.0.0.1 localhost).
  • /etc/resolv.conf : serveurs DNS (nameserver 8.8.8.8).
  • /etc/nsswitch.conf : ordre de resolution (files dns).
cat /etc/hostname /etc/hosts /etc/resolv.conf
ping -c 4 8.8.8.8          # connectivite IP
ping -c 4 exemple.fr       # + resolution DNS
getent hosts exemple.fr
dig exemple.fr / host exemple.fr
curl -I https://exemple.fr

3. Pare-feu : UFW (simple) et firewalld/nftables

# UFW (Debian/Ubuntu)
sudo ufw allow 22/tcp
sudo ufw allow 80,443/tcp
sudo ufw enable
sudo ufw status verbose
# firewalld (RHEL)
sudo firewall-cmd --add-service=http --permanent
 sudo firewall-cmd --reload
Démonstration pas à pas : ss -tlnp | grep :80-t filtre TCP, -l les ports en écoute, -n évite la résolution lente, -p affiche le processus. Si la ligne 0.0.0.0:80 manque, le serveur web n'écoute pas. ping -c 4 8.8.8.8 teste la connectivité IP pure, ping -c 4 exemple.fr ajoute le DNS : si le premier passe et le second échoue, le coupable est resolv.conf, pas le câble.
Pièges classiques : ifconfig et netstat sont obsolètes : l'examen attend ip et ss. ping vers une IP qui répond ne prouve pas que le DNS fonctionne. ufw enable sans avoir autorisé le port 22 coupe ton propre SSH. Sur firewalld, oublier --permanent puis --reload rend la règle éphémère.
À vous de jouer : Quelle commande moderne liste les ports TCP en écoute avec les processus associés ?
Voir la réponse

ss -tlnp : t pour TCP, l pour listening, n pour numérique, p pour processus. Le port apparaît dans la colonne locale.

Points d'examen (102-500) : ip addr/route/link vs vieux outils, lecture de ss -tlnp (colonne Local = port en ecoute), role de chaque fichier (hosts/hostname/resolv.conf/nsswitch.conf), ports 22/80/443/53, ufw allow/enable/status.
8.1ip et ss : adresses, routes, ports
8.2DNS et fichiers de resolution
8.3UFW et firewalld

Objectif de sortie — niveau intermediaire

Vous installez et mettez a jour des paquets sur les deux familles, pilotez systemd et ses targets, deployez un volume LVM monte via fstab, et diagnostiquez le reseau avec ip et ss. Validez les missions 4 a 8 dans le terminal.