Linux
Administration avancée
Maintenance et exploitation de vos serveurs
Chapitre 1
Introduction
1. Que contient ce livre ?19
2. Prérequis20
3. Obtenir les logiciels mis en oeuvre20
3.1 Image ISO des distributions Linux20
3.2 Oracle VM VirtualBox21
3.3 Machines virtuelles21
3.4 Conventions24
Chapitre 2
Architecture du système GNU/Linux
1. Vue d'ensemble27
1.1 Projet GNU27
1.2 Distributions Linux28
2. Identifier la distribution30
2.1 Debian30
2.2 Fedora, Red Hat et CentOS32
3. Plates-formes matérielles34
3.1 Sur quelles plates-formes ?34
3.2 Identifier l'architecture matérielle34
4. Anneaux de protection35
4.1 Commutation de contexte35
4.2 Architecture 32 bits36
4.3 Architecture 64 bits38
4.3.1 Sans virtualisation38
5. Chargeurs d'amorçage39
5.1 Définition39
6. Grub legacy40
7. Grub-PC40
8. Noyau Linux40
8.1 Composants du noyau41
8.2 Code source42
8.3 Version du noyau42
8.3.1 Historique des versions42
8.3.2 Numéros de version52
8.3.3 Comment connaître la version du noyau ?53
8.4 Modules du noyau54
9. Pilotes de périphériques56
9.1 Fichiers spéciaux56
9.2 Pilotes réseau61
10. Bibliothèques62
10.1 Bibliothèques statiques63
10.2 Bibliothèques partagées67
10.3 Emplacement des bibliothèques68
11. Appels système68
12. Gestion des services72
12.1 Système V init73
12.2 Services75
12.3 Debian76
12.3.1 Red Hat77
12.4 Systemd78
13. Journaux système95
13.1 Service rsyslogd95
13.2 Service systemd-journald105
14. Shell109
14.1 Différents shells109
14.1.1 Bourne Shell109
14.1.2 Almquist Shell et Debian Almquist Shell110
14.1.3 Korn Shell110
14.1.4 C-Shell et Tenex C-Shell110
14.1.5 Bourne Again Shell111
14.2 Quel est le shell de connexion ?111
15. Applications112
15.1 Pages de manuel113
15.1.1 Sections114
15.1.2 Rechercher l'aide d'une commande116
16. Exercice117
Chapitre 3
Noyau Linux
1. Introduction119
1.1 Pourquoi compiler un noyau ?119
1.2 Fichiers composant le noyau120
2. Compiler et installer un noyau120
2.1 Effectuer une compilation classique120
2.1.1 Prérequis121
2.1.2 Télécharger le code source du noyau121
2.1.3 Outils pour configurer le noyau124
2.1.4 Fichiers de configuration131
2.1.5 Supprimer les fichiers d'une précédente compilation132
2.1.6 Construire le noyau133
2.1.7 Installer un module de noyau134
2.2 Compiler un noyau façon Debian135
2.2.1 Paquets nécessaires135
2.2.2 Privilèges utilisateur135
2.2.3 Supprimer les fichiers d'une précédente compilation137
2.2.4 Construire un noyau137
2.2.5 Installer un noyau139
3. Désinstaller un noyau140
3.1 Debian140
3.1.1 Lister les noyaux installés140
3.1.2 Désinstaller141
3.2 Red Hat/CentOS141
3.2.1 Lister les noyaux installés141
3.2.2 Désinstaller141
3.2.3 Limiter le nombre de paquets143
4. Choisir un noyau au démarrage144
4.1 Debian145
4.2 Red Hat/CentOS146
4.3 Délai pour choisir le noyau à exécuter146
5. Kernel panic148
5.1 Caractérisation148
5.2 Fréquence du problème149
5.3 Analyse de la source du problème149
5.4 Analyse du matériel151
5.5 Analyse des logiciels153
5.5.1 Chargeur d'amorçage153
5.5.2 Origine du noyau153
5.5.3 Modules154
5.6 Recherche de solutions154
5.7 Appliquer la solution154
6. Exercice155
Chapitre 4
Modules
1. Introduction157
2. Compiler et installer un module158
2.1 Prérequis à la compilation158
2.1.1 Debian158
2.1.2 Red Hat158
2.2 Écrire un module « Hello world »159
2.2.1 Rédiger le code source160
2.2.2 Créer le fichier Makefile161
2.2.3 Compiler le code source hello.c162
3. Changer un module163
3.1 Installer le module hello163
3.2 insmod163
3.3 Gérer les dépendances164
3.4 modprobe165
3.5 Charger un module au démarrage166
3.5.1 Debian166
3.5.2 Red Hat166
4. Décharger un module167
5. Lister les modules168
5.1 Lister tous les modules disponibles168
5.2 Lister les modules chargés169
6. Obtenir des informations170
7. Bloquer un module173
8. Journaux système174
9. Exercice176
Chapitre 5
Pseudo-systèmes de fichiers
1. procfs179
1.1 Présentation179
1.2 Principaux fichiers de / proc180
1.2.1 /proc/acpi181
1.2.2 /proc/apm181
1.2.3 /proc/asound181
1.2.4 /proc/asound/card0/182
1.2.5 /proc/asound/card0/codec97#0182
1.2.6 /proc/asound/card0/id183
1.2.7 /proc/asound/card0/intel8x0183
1.2.8 /proc/asound/card0/pcmXX/184
1.2.9 /proc/asound/cards184
1.2.10 /proc/asound/devices184
1.2.11 /proc/asound/<id de la carte son>184
1.2.12 /proc/asound/modules184
1.2.13 /proc/asound/oss185
1.2.14 /proc/asound/pcm185
1.2.15 /proc/asound/seq185
1.2.16 /proc/asound/timers185
1.2.17 /proc/asound/version185
1.2.18 /proc/buddyinfo186
1.2.19 /proc/bus186
1.2.20 /proc/cmdline190
1.2.21 /proc/cpuinfo190
1.2.22 /proc/crypto191
1.2.23 /proc/devices192
1.2.24 /proc/diskstats193
1.2.25 /proc/dma194
1.2.26 /proc/driver et /proc/driver/nvram195
1.2.27 /proc/driver/rtc195
1.2.28 /proc/execdomains196
1.2.29 / proc/fb196
1.2.30 / proc/filesystems196
1.2.31 / proc/fs197
1.2.32 / proc/interrupts197
1.2.33 / proc/iomem198
1.2.34 / proc/ioports199
1.2.35 / proc/irq200
1.2.36 / proc/kallsyms202
1.2.37 / proc/kcore203
1.2.38 / proc/keys203
1.2.39 / proc/key-users203
1.2.40 / proc/kmsg204
1.2.41 / proc/kpagecount204
1.2.42 / proc/kpageflags204
1.2.43 / proc/Ioadavg204
1.2.44 / proc/locks204
1.2.45 / proc/mdstat206
1.2.46 / proc/meminfo209
1.2.47 / proc/misc209
1.2.48 / proc/modules209
1.2.49 / proc/mounts210
1.2.50 / proc/mtrr211
1.2.51 / proc/net211
1.2.52 / proc/pagetypeinfo212
1.2.53 / proc/partitions212
1.2.54 / proc/sched_debug212
1.2.55 / proc/schedstat213
1.2.56 / proc/scsi213
1.2.57 / proc/self215
1.2.58 / proc/slabinfo216
1.2.59 / proc/softirqs216
1.2.60 / proc/stat217
1.2.61 / proc/swaps218
1.2.62 /proc/sys218
1.2.63 /proc/sysrq-trigger230
1.2.64 /proc/sysvipc231
1.2.65 /proc/timer_list231
1.2.66 /proc/timer_stats231
1.2.67 /proc/tty232
1.2.68 /proc/uptime232
1.2.69 /proc/version232
1.2.70 /proc/vmallocinfo233
1.2.71 /proc/vmstat233
1.2.72 /proc/zoneinfo234
1.3 Dossiers d'un processus234
1.3.1 /proc/1/cmdline235
1.3.2 /proc/1/cwd235
1.3.3 /proc/1/environ235
1.3.4 /proc/1/exe236
1.3.5 /proc/1/fd236
1.3.6 /proc/1/maps236
1.3.7 /proc/1/smaps237
1.3.8 /proc/1/mem238
1.3.9 /proc/1/root238
1.3.10 /proc/1/stat238
1.3.11 /proc/1/statm238
1.3.12 /proc/1/status239
1.4 Modification des paramètres du noyau239
1.4.1 Modification volatile240
1.4.2 Modification permanente241
2. sysfs243
2.1 Présentation243
2.2 Principaux fichiers de /sys243
2.2.1 /sys/block243
2.2.2 /sys/bus244
2.2.3 /sys/class244
2.2.4 /sys/dev244
2.2.5 /sys/devices245
2.2.6 /sys/firmware245
2.2.7 /sys/fs247
2.2.8 /sys/hypervisor247
2.2.9 sys/kernel247
2.2.10 /sys/module249
2.2.11 /sys/power250
2.3 Utilitaire systool251
2.3.1 Installation251
2.3.2 Utilisation de systool253
2.4 Modification des paramètres du noyau257
3. Exercice258
Chapitre 6
Dépannage matériel
1. Types de problèmes matériels259
1.1 Pannes matérielles259
1.1.1 Non-fonctionnement du matériel259
1.1.2 Fonctionnement erratique du matériel260
1.1.3 Problèmes de firmware et de pilote260
1.1.4 Autres considérations261
1.2 Matériel non détecté par le système261
2. Analyser le matériel262
2.1 Lister le matériel262
2.1.1 Installation de lshw262
2.1.2 Utilisation de lshw264
2.2 Système268
2.3 CPU268
2.4 Table DMI270
2.5 Bus274
2.5.1 Ispci274
2.5.2 Isusb277
2.5.3 Isscsi279
2.5.4 Ispcmcia280
2.6 Mémoire282
2.6.1 Informations sur la mémoire282
2.6.2 Diagnostiquer la mémoire282
2.7 Carte graphique284
2.8 Disques durs284
2.8.1 Informations sur les contrôleurs284
2.8.2 Informations sur les disques285
2.8.3 Informations sur les volumes287
2.8.4 Diagnostiquer un disque dur288
2.9 Carte réseau295
3. Exercice299
Chapitre 7
Maintenance des disques
1. Introduction301
2. Partitions301
2.1 Table de partition303
2.1.1 Type msdos303
2.1.2 Type GPT304
2.1.3 Convertir du MBR vers GPT305
2.1.4 Supprimer une table de partition308
2.2 Outils de partitionnement308
2.2.1. fdisk309
2.2.2 cfdisk317
2.2.3 GNU parted319
2.2.4 GParted et QtParted322
2.2.5 Livre CD325
3. Logical Volume Manager326
3.1 Terminologie326
3.1.1 Volume physique326
3.1.2 Groupe de volumes327
3.1.3 Volume logique327
3.1.4 Métadonnées328
3.2 Administration des volumes physiques329
3.2.1 Créer un volume physique329
3.2.2 Afficher les volumes physiques331
3.2.3 Modifier la taille d'un volume physique333
3.2.4 Supprimer la taille d'un volume physique334
3.3 Administration des groupes de volumes335
3.3.1 Créer un groupe de volumes335
3.3.2 Afficher les groupes de volumes336
3.3.3 Ajouter un volume physique au groupe de volumes339
3.3.4 Retirer un volume physique du groupe de volumes341
3.3.5 Activer ou désactiver un groupe de volumes342
3.3.6 Supprimer un groupe de volumes342
3.3.7 Diviser un groupe de volumes343
3.3.8 Fusionner des groupes de volumes345
3.3.9 Renommer un groupe de volumes346
3.4 Administration des volumes logiques347
3.4.1 Créer des volumes logiques en mode linéaire347
3.4.2 Créer des volumes logiques en mode stripe351
3.4.3 Créer des volumes logiques en miroir355
3.4.4 Créer des snapshots de volume logique359
3.4.5 Afficher les volumes logiques362
3.4.6 Augmenter la taille d'un volume logique364
3.4.7 Réduire la taille d'un volume logique366
3.4.8 Renommer un volume logique369
3.4.9 Supprimer un volume logique370
3.5 Déplacer des données370
4. Systèmes de fichiers375
4.1 ext2375
4.1.1 Blocs376
4.1.2 Superbloc377
4.1.3 Inodes379
4.1.4 Créer un système de fichiers ext2381
4.2 ext3382
4.2.1 La journalisation382
4.2.2 Convertir une partition ext2 en ext3383
4.2.3 Créer un système de fichiers ext3383
4.3 ext4385
4.3.1 Convertir une partition ext3 en ext4385
4.3.2 Créer un système de fichiers ext4386
5. Exercices388
5.1 Partitionnement pendant l'installation388
5.2 Partitionnement post-installation389
Chapitre 8
Séquence d'amorçage
1. Introduction391
2. Processus d'amorçage391
3. GRUB 2392
3.1 Identifier la version de GRUB392
3.2 Fichiers de configuration393
4. L'unité cible (target)399
4.1 Gestion de la cible par défaut399
4.2 Contrôle des cibles401
4.3 Sélection d'une cible différente au démarrage402
4.3.1 Mode de secours (rescue)402
4.3.2 Mode d'urgence (emergency)404
4.4 Récupération du mot de passe de root405
4.5 Analyser le processus de démarrage406
5. Sauver et restaurer le MBR409
6. Le journal du boot409
7. Exercice411
Chapitre 9
Maintenance des applications
1. Introduction413
2. Application ne s'exécutant pas413
2.1 Description d'un paquet installé414
2.2 Fichiers de configuration418
2.3 Consulter les journaux419
2.4 Filtrages réseau423
2.5 Dépendances du programme426
2.6 Emplacement des bibliothèques428
2.7 Mode de débogage431
3. Application ne répondant pas431
3.1 Mode débogage431
3.2 Terminer un processus432
3.2.1 Rechercher un PID432
3.2.2 Outils pour terminer un processus435
4. Fonctionnement dégradé440
5. Comportement inattendus441
5.1 Supprimer les zombies441
5.2 Fuite de mémoire443
6. Exercices446
6.1 Tuer un programme zombie446
6.2 Identifier une fuite mémoire447
Chapitre 10
Maintenance de la configuration réseau
1. Modèles de communication449
1.1 Rappel du modèle OSI449
1.2 Modèle TCP/IP451
1.3 Modèle OSI contre modèle TCP/IP452
2. Interface physique453
2.1 Détection du matériel et du pilote453
2.2 Adressage physique456
2.2.1 Identifier l'adresse MAC456
2.2.2 Cache ARP457
2.2.3 ARPing458
3. Interface logique460
3.1 CentOS 7 : changer le nom de l'interface461
3.2 Activer/désactiver une interface464
3.3 Configurer une interface469
3.3.1 Configuration des interfaces sous Debian469
3.3.2 Configuration des interfaces sous Red Hat470
3.4 Adressage IPv4472
3.4.1 Adresse IPv4 statique474
3.4.2 Adressage IPv4 dynamique475
3.5 Passerelle par défaut477
3.6 Résolution des noms d'hôtes478
3.6.1 Tester la résolution de noms479
3.6.2 Fichiers de configuration480
4. Outils d'analyse481
4.1 Problèmes de connexion481
4.1.1 Vérifier la configuration TCP/IP482
4.1.2 Vérifier l'ajout au réseau482
4.1.3 Vérifier la communication locale483
4.1.4 Vérifier la communication distante484
4.2 Bloquer/débloquer le ping484
4.2.1 Bloquer ping avec / proc484
4.2.2 Bloquer ping486
4.3 Ports ouverts489
4.4 Bande passante491
5. Exercices495
5.1 Collecter la configuration d'une carte réseau495
5.2 Renommer l'interface réseau en eth0496
Chapitre 11
Analyse des performances
1. Introduction497
2. Goulet d'étranglement498
2.1 Identifier les ressources498
2.2 Capturer et stocker des données499
3. Processeur500
4. Mémoires505
4.1 Mémoire physique505
4.1.1 Architecture x86505
4.1.2 Architecture x86_64/amd64506
4.2 Mémoire tampon506
4.3 Mémoire cache507
4.4 L'espace d'échange507
4.4.1 Swap en tant que partition508
4.4.2 Swap en tant que fichier508
4.5 Mémoire virtuelle510
4.6 Afficher la mémoire du système510
4.7 La carte mémoire d'un programme513
4.8 Mémoire insuffisante515
5. Disques517
6. Interfaces réseau520
7. Exercice523
7.1 Création d'un fichier swap523
7.2 Stress de la mémoire524
Chapitre 12
Sécurité
1. Introduction525
2. Sécurité physique526
2.1 Qui doit accéder à la machine ?526
2.2 Alimentation électrique526
2.3 Interfaces de communication526
2.4 BIOS533
3. Sécurité logicielle534
3.1 Version des logiciels534
3.2 Que faut-il installer ?534
3.3 Mise à jour535
3.4 Gérer des paquets deb avec apt537
3.4.1 Installer un paquet537
3.4.2 Rechercher des paquets538
3.4.3 Afficher la description d'un paquet539
3.4.4 Afficher les dépendances541
3.4.5 Installer les dépendances545
3.4.6 Afficher les informations d'un paquet547
3.4.7 Identifier le dépôt d'un paquets548
3.4.8 Provenance d'un fichier548
3.4.9 Lister le contenu d'un paquet551
3.4.10 Rechercher les versions des paquets disponibles552
3.4.11 Mettre à jour les dépôts553
3.4.12 Mettre à jour les paquets système554
3.4.13 Désinstaller un paquet556
3.4.14 Supprimer les paquets d'installation557
3.5 Gérer des paquets deb avec dpkg558
3.5.1 Lister les paquets installés558
3.5.2 Reconfigurer un paquet560
3.5.3 Traiter les paquets cassés561
3.6 Gérer les paquets RPM avec yum561
3.6.1 Mise à jour du système561
3.6.2 Rechercher un paquet564
3.6.3 Installer un paquet566
3.6.4 Supprimer un paquet567
3.6.5 Afficher les informations du paquet568
3.6.6 Mise à jour sélective569
3.6.7 Gérer les groupes de programmes569
3.7 Gérer les paquets RPM avec rpm571
3.7.1 Installer un paquet571
3.7.2 Lire les informations d'un paquet572
3.7.3 Afficher tous les paquets installés573
3.7.4 Modifier le format d'affichage574
3.8 Identification et authentification574
3.8.1 Types de compte574
3.8.2 Caractéristiques d'un compte575
3.8.3 Caractéristiques du compte root575
3.8.4 Authentification577
3.8.5 Profil utilisateur577
3.8.6 Session577
3.8.7 Vérifier les fichiers de comptes577
3.9 Configuration réseau578
3.9.1 Identifier les ports ouverts578
3.9.2 Pare-feu580
3.10 Faut-il un antivirus ?583
Chapitre 13
Correction des exercices
1. Exercice du chapitre Architecture du système GNU/Linux585
2. Exercice du chapitre Noyau Linux587
3. Exercice du chapitre Modules588
4. Exercice du chapitre Pseudo-systèmes de fichiers590
5. Exercice du chapitre Dépannage matériel591
6. Exercice du chapitre Maintenance des disques593
6.1 Partitionnement pendant l'installation593
6.2 Partitionnement post-installation604
7. Exercice du chapitre Séquence d'amorçage608
8. Exercice du chapitre Maintenance des applications608
8.1 Tuer un programme zombie609
8.2 Identifier une fuite mémoire610
9. Exercice du chapitre Maintenance de la configuration réseau613
9.1 Collecter la configuration d'une carte réseau613
9.2 Renommer l'interface réseau en eth0614
10. Exercice du chapitre Analyse des performances615
10.1 Création d'un fichier swap616
10.2 Stress de la mémoire617
Index619