Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Linux
  3. Correction des exercices
Extrait - Linux Administration avancée - Maintenance et exploitation de vos serveurs (3e édition)
Extraits du livre
Linux Administration avancée - Maintenance et exploitation de vos serveurs (3e édition) Revenir à la page d'achat du livre

Correction des exercices

Exercice du chapitre Architecture du système GNU/Linux

L’objectif est d’identifier les différents composants du système.

1. Avant de commencer, ouvrez une console sur l’une des trois distributions que nous évoquons dans cet ouvrage. Puis, identifiez-vous en tant que root.

Pour la distribution Debian :

Debian GNU/Linux 9 system1 tty1 
system1 login : bob  
password :   
bob@system1:~$ sudo -i  
[sudo] password for bob:  
root@system1:~# 

Vous pouvez effectuer cette même manipulation avec CentOS si vous avez le compte utilisateur bob défini comme sudoer. Pour cela, il faut qu’il soit membre du groupe wheel. Sinon, vous avez d’autres possibilités :

  • Ouvrir une session en tant que root puisque ce dernier n’est pas désactivé.

  • Ouvrir une session avec le compte utilisateur régulier bob et utiliser la commande su :

CentOS Linux 7 (core)  
Kernel 3.10.0-229.20.1.el7.x86_64 on an X86_64  
 
system2 login : bob  
Password :  
[bob@ system2 ~]$ su -  
Mot de passe :  
[root@ system2 ~]# 

2. Identifiez, à l’aide de plusieurs commandes, les informations suivantes :

  • L’architecture matérielle avec uname :

    uname -m 
  • La version du noyau :

    uname -r 
  • La liste des modules de noyau qui sont chargés :

    lsmod...

Exercice du chapitre Noyau Linux

Vous allez utiliser la distribution de votre choix.

1. Ouvrez une session en tant que root et ouvrez une invite de commande :

Vous vous connectez directement avec le compte root ou bien vous vous connectez avec un compte qui est sudoer :

sudo -i 

2. Téléchargez le dernier noyau Linux dans le répertoire /root :

wget https://cdn.kernel.org/pub/linux/kernel/vN.x/linux-N.N.N.tar.xz 

Adaptez la commande ci-dessus en remplaçant les trois « N » par les numéros de la dernière version du noyau Linux proposée sur le site web. Exemple :

wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.19.13.tar.xz 

3. Décompressez l’archive et entrez dans le répertoire Linux :

tar xJvf linux-N.N.N.tar.xz  
cd linux-N.N.N.tar.xz 

4. Assurez-vous de disposer de tous les prérequis logiciels :

  • Pour les distributions Debian et Ubuntu :

    apt-get install build-essential module-init-tools fakeroot 
  • Pour la distribution CentOS :

    yum groupinstall "Development Tools" 

5. Reprenez le fichier de configuration du noyau actif :

make defconfig 

6. Compilez le noyau (méthode classique) puis installez-le :

make && make modules_install install 

7. Redémarrez votre système avec le nouveau noyau :

shutdown -r now 

Dans le menu de GRUB, assurez-vous que le système démarre bien avec le nouveau noyau. Ouvrez une session...

Exercice du chapitre Modules

1. Créez un répertoire LKM dans votre répertoire de base et entrez dans celui-ci.

mkdir ./lkm 
cd lkm 

2. Écrivez le code suivant :

#include <linux/module.h> 
#include <linux/kernel.h> 
 
MODULE_LICENSE("GPL");  
MODULE_AUTHOR("John Doe");  
MODULE_DESCRIPTION("Module hello world");  
MODULE_VERSION("Version 1.00");  
 
int init_module(void)  
{  
     printk(KERN_INFO "[Hello world] - La fonction init_module() est 
appelée.\n"); 
     return 0;  
}  
 
void cleanup_module(void)  
{  
     printk(KERN_INFO "[Hello world] - La fonction cleanup_module() 
est appelée.\n");  
} 

3. Écrivez le fichier Makefile :

obj-m += hello.o  
  
all:  
     make -C /lib/modules/$(shell uname -r)/build M=$(PWD)   
modules  
  
clean:  
     make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean 
  
install:  
     cp ./hello.ko /lib/modules/$(shell uname  -r)
/kernel/drivers/misc 

4. Compilez puis installez :

make && make install 

5. Chargez le module automatiquement au démarrage...

Exercice du chapitre Pseudo-systèmes de fichiers

L’objectif est de modifier de façon permanente la gestion du swap.

1. Ouvrez une session en tant que super-utilisateur :

  • Pour la distribution Debian :

    Debian GNU/Linux 9 system1 tty1 
    system1 login : root  
    password :  
    root@system1:~# 
  • Pour la distribution CentOS :

    CentOS Linux 7 (core) 
    Kernel 3.10.0-229.20.1.el7.x86_64 on an X86_64  
     
    srv02 login : root  
    system2 login : root  
    Password :  
    [root@srv02 ~]# 
    [root@ system2 ~]# 

2. Quel est le paramètre du noyau Linux qui contrôle la quantité de données qui doit être conservée en mémoire vive ou mise dans le swap ? Affichez sa valeur. 

Le paramètre du noyau est /proc/sys/vm/swappiness. Sa valeur est :

# cat /proc/sys/vm/swappiness 
60 

3. Modifiez la valeur de ce paramètre à 10. Veillez à ce que cette modification soit permanente. Redémarrez le système et vérifiez.

Le changement permanent s’effectue dans le dossier /etc/sysctl.d/. Créez dans ce dernier un fichier dont l’extension doit être « .conf » :

vi /etc/sysctl.d/mes_parametres.conf 

Le nom de ce fichier est quelconque. Ajoutez dans celui-ci la ligne de configuration suivante :

vm.swappiness = 10 

Après redémarrage...

Exercice du chapitre Dépannage matériel

1. Ouvrez une session dans une console en tant qu’utilisateur root.

  • Pour les distributions Debian et Ubuntu :

    Debian GNU/Linux 9 system1 tty1 
    system1 login : root  
    password :  
    root@srv01:~#  
    root@system1:~# 
  • Pour la distribution CentOS :

    CentOS Linux 7 (core) 
    Kernel 3.10.0-229.20.1.el7.x86_64 on an X86_64 
     
    system2 login : root 
    Password :  
    [root@system2 ~]# 

2. Vérifiez la présence de la commande lshw. Si elle n’est pas présente, installez-la.

  • La commande est installée de base pour la distribution Debian.

  • Pour CentOS, installez le paquet :

yum install -y lshw 

3. Identifiez le nom de votre interface de communication filaire avec lshw et le nom du pilote de périphérique :

# lshw -c network 

L’interface Ethernet 82540EM Gigabit Ethernet Controller a pour nom logique enp0s3. Le pilote de périphérique (driver), qui est du reste un module de noyau, est e1000.

4. Affichez les entrées du journal concernant le pilote.

Le journal dans lequel résident des informations concernant les périphériques est /var/log/dmesg :

# dmesg |grep e1000 

ou bien :

journalctl -k |grep e1000 

5. Vérifiez si le pilote est chargé :

lsmod |grep e1000 

6. Déchargez le module de noyau qui pilote cette interface.

  • Avec modprobe :

modprobe...

Exercice du chapitre Maintenance des disques

1. Partitionnement pendant l’installation

1. Créez une nouvelle machine virtuelle :

Composants

Valeurs

Général

Linux Debian 9 (64 bits)

1024 Mio de RAM

Système

Ordre d’amorçage :

disque dur

optique

Stockage

Contrôleur CD/DVD

Image ISO DVD1 de Debian

Cinq disques durs (dynamiquement alloués) : Disque 1 : 8 Gio

Disque 2 : 10 Gio

Disque 3 : 5 Gio

Disque 4 : 10 Gio

Disque 5 : 9 Gio

Réseau

Carte 1 activée en NAT

2. Installez Debian 9 avec la configuration suivante :

Composants

Valeurs

Compte root

Désactivé

Compte bob

Sudoer

Mot de passe : formation

Partition primaire

/boot : 1 Gio (ext2)

Groupe de volumes

Nom : sysVG

Liste des PV :

/dev/sda

/dev/sdb

Volumes logiques

Swap : swapLV de 1204 Mio

/ : rootLV de 8 Gio (ext4)

/usr : usrLV de 5 Gio (ext4)

/var : varLV de 4 Gio (ext4)

Interface graphique

Non

Packages

Par défaut

Réseau

Client DHCP

3. Ouvrez une session en tant que bob et affichez les PV, le VG et les LV.

Une fois la machine virtuelle créée dans VirtualBox, vous la démarrez.

L’ouvrage n’intègre pas toutes les captures d’écran de l’installation mais seulement les étapes clés. Une connexion Internet est conseillée.

 Choisissez dans le menu Advanced options :

images/99EI01.png

 Puis Graphical expert install :

images/99EI02.png

Le premier menu d’installation apparaît :

images/99EI03.png

 Choisissez la langue française, le pays France, les paramètres régionaux fr_FR.UTF-8 et le clavier français. Vous pouvez choisir une autre langue et un autre pays si besoin.

 Nous n’avons pas besoin de composants supplémentaires à installer.

 La configuration réseau s’effectue automatiquement (DHCP).

 Le nom de la machine est debsrv et le suffixe DNS staff.local. Là aussi, vous pouvez mettre des valeurs autres.

 Les mots de passe doivent être dans le fichier /etc/shadow. Nous refusons la connexion de root. Vous allez donc créer un utilisateur qui sera sudoer. Le nom de connexion est bob. Son mot de passe est : formation.

 Acceptez la configuration de l’horloge. Acceptez le serveur de temps proposé Europe/Paris. Vous pouvez adapter si vous êtes hors...

Exercice du chapitre Séquence d’amorçage

Vous allez utiliser la machine virtuelle CentOS 7.

1. Modifiez à 1 minute le délai du menu GRUB de façon permanente.

 Modifiez le fichier /etc/default/grub et mettez le délai à 60 secondes :

GRUB_TIMEOUT=60 

 Regénérez la configuration de GRUB :

grub2-mkconfig -o /boot/grub2/grub.cfg 

2. Redémarrez le système pour vérifier.

Exercice du chapitre Maintenance des applications

Pour les deux exercices, vous allez utiliser la machine virtuelle Debian. Ouvrez une session en ligne de commande et soyez root.

  • Pour la distribution Debian :

Debian GNU/Linux 9 system1 tty1 
system1 login : root  
password :  
root@system1:~# 
  • Pour la distribution CentOS :

CentOS Linux 7 (core) 
Kernel 3.10.0-229.20.1.el7.x86_64 on an X86_64  
 
system2 login : root  
Password :  
[root@system2 ~]# 

1. Tuer un programme zombie

1. Écrivez le code suivant dans un éditeur de texte. Nommez le fichier zombie.c :

// zombie.c 
 
#include <stdio.h> 
#include <stdlib.h> 
#include <sys/types.h> 
#include <unistd.h> 
 
int main(void) 
{ 
  pid_t child_pid; 
 
  child_pid = fork (); 
 
  if (child_pid > 0) { 
    printf("Processus parent : Attendre 2 minutes.\n"); 
    sleep(120); 
  } 
  else { 
    printf("Processus fils : Sortie immédiate.\n"); 
    exit(0); 
  } 
  return(0); 
} 

2. Compilez avec gcc :

gcc zombie.c -o zombie 

3. Exécutez le programme zombie en arrière-plan :

./zombie & 

4. Vous avez deux minutes. Identifiez...

Exercice du chapitre Maintenance de la configuration réseau

1. Collecter la configuration d’une carte réseau

Deux machines virtuelles sont nécessaires :

  • La première est une machine Debian 9.

  • La seconde est une machine CentOS 7.

1. Utilisez la première. Ouvrez une session en tant que root.

Debian GNU/Linux 9 system1 tty1 
system1 login : root  
root@system1:~# 

2. Identifiez les informations suivantes :

Élément

Valeur

Commande utilisée

Nom de la carte

enp0s3

lshw -c network

Nom du constructeur et modèle

82540EM Gigabit Ethernet Controller

Intel Corporation

lshw -c network

Driver de la carte

e1000

lshw -c network

Duplex

full

lshw -c network

Vitesse de la carte

1000

lshw -c network

Adresse MAC

08:00:27:3a:17:d8*

Ip addr

Adresse statique ou dynamique

dynamique

cat /etc/network/interfaces

Adresse IP et masque

10.0.2.15/24

Ip addr

Passerelle par défaut

10.0.2.2

Netstat -rn

Nom de la machine

debsrv

hostname

* La valeur de l’adresse MAC peut être différente.

D’autres commandes peuvent également donner de bonnes réponses.

2. Renommer l’interface réseau en eth0

1. Utilisez la deuxième machine virtuelle.

Ouverture de session :

CentOS Linux 7 (core) 
Kernel 3.10.0-229.20.1.el7.x86_64 on an X86_64 
 
system2 login : root  
Password :  
[root@system2 ~]# 

2. Identifiez...

Exercice du chapitre Analyse des performances

Vous allez utiliser la machine virtuelle Debian.

Ouvrez une session en ligne de commande et soyez super-utilisateur.

Pour la distribution Debian :

Debian GNU/Linux 9 system1 tty1  
system1 login : root 
password : 
root@system1:~# 

1. Création d’un fichier swap

1. Regardez l’état du swap actuel et notez les valeurs.

root@system1:~# free -mt 
             total       used       free     shared    buffers     cached 
Mem:           490        124        365          4         12         50 
-/+ buffers/cache:         61        428 
Swap:          975          0        975 
Total:        1466        124       1341 

2. Créez un fichier swap de 100 Mio qui se nomme mem.swp.

root@system1:~# dd if=/dev/zero of=mem.swp bs=1024 count=100000 

3. Activez le fichier swap. Vérifiez s’il est activé.

 Créez une zone de swap dans le fichier mem.swp :

root@system1:~# mkswap mem.swp 

 Mettez les droits adaptés à ce fichier :...