Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
elearning:workbooks:centos:8:junior:l116 [2021/06/14 16:12] adminelearning:workbooks:centos:8:junior:l116 [2024/09/12 09:18] (Version actuelle) admin
Ligne 1: Ligne 1:
 ~~PDF:LANDSCAPE~~ ~~PDF:LANDSCAPE~~
  
-Version : **2021.01**+Version : **2024.01**
  
 Dernière mise-à-jour : ~~LASTMOD~~ Dernière mise-à-jour : ~~LASTMOD~~
Ligne 39: Ligne 39:
     * Processus de Démarrage du Noyau Linux     * Processus de Démarrage du Noyau Linux
     * Processus Init     * Processus Init
-    * Démarrer RHEL/CentOS 8 +    * Systemd 
-      * La Commande systemctl +      * LAB #1 - La Commande systemctl 
-      * Fichiers de Configuration +      * LAB #2 - Fichiers de Configuration 
-      * La Commande systemd-analyze +        * 2.1 - Fichiers de Configuration par Défaut 
-      * Gestion des Services+        * 2.2 - Surchargement des Fichiers de Configuration par Défaut 
 +      * LAB #3 - La Commande systemd-analyze 
 +      * LAB #4 - Les Cibles Systemd 
 +        * 4.1 - Contrôler les dépendances d'une Cible 
 +        * 4.2 - La Cible par Défaut 
 +      * LAB #5 - Gestion des Services 
 +        * 5.1 - Gestion des Instances Uniques 
 +        * 5.2 - Gestion d'Instances Multiples 
 +        * 5.3 - Interdire la Modification du Statut d'un Service
     * Arrêt Système du Système     * Arrêt Système du Système
       * La Commande shutdown       * La Commande shutdown
Ligne 75: Ligne 83:
   * Lancer le **Charger de Démarrage** du système d'exploitation en utilisant le **bootstrap loader**.   * Lancer le **Charger de Démarrage** du système d'exploitation en utilisant le **bootstrap loader**.
  
-===Charger de Démarrage===+===Chargeur de Démarrage===
  
-La première partie du Charger de Démarrage est en règle générale placé dans le MBR du disque. Le format du MBR est le suivant :+La première partie du Chargeur de Démarrage est en règle générale placé dans le MBR du disque. Le format du MBR est le suivant :
  
   * 446 octets pour le Charger de Démarrage,   * 446 octets pour le Charger de Démarrage,
Ligne 96: Ligne 104:
  
 <WRAP center round important 60%> <WRAP center round important 60%>
-**Important** : L'UEFI gère parfaitement les **SSD** (//Solid State Drives//) qui utilisent le standard **NVMe** (//Non-Volatile Memory Express//). Linux supporte les SSD depuis le noyau 3.3.+**Important** : L'UEFI gère les **SSD** (//Solid State Drives//) qui utilisent le standard **NVMe** (//Non-Volatile Memory Express//). Linux supporte les SSD depuis le noyau 3.3.
 </WRAP> </WRAP>
  
Ligne 105: Ligne 113:
 =====Gestionnaires de Démarrage===== =====Gestionnaires de Démarrage=====
  
-Des gestionnaires d'amorçage sous Linux, un se distingue comme étant le plus utilisé : +====GRUB 2====
- +
-  * GRUB (Grand Unified Boot Loader) +
- +
-Cependant il en existe d'autres : +
- +
-  * LILO (LInux LOader) +
-  * %%SysLinux%% +
-  * %%LoadLin%% +
-  * ... +
- +
-====GRUB 2 sous RHEL/CentOS 8====+
  
 GRUB 2 est une ré-écriture complète de GRUB Legacy. Il apporte des améliorations, notamment GRUB 2 sait utiliser des partitions RAID et LVM. GRUB 2 est une ré-écriture complète de GRUB Legacy. Il apporte des améliorations, notamment GRUB 2 sait utiliser des partitions RAID et LVM.
Ligne 320: Ligne 317:
 </code> </code>
  
-Prenons le cas des paramètres de Grub Legacy et comparons-les aux paramètres de GRUB 2 : +Notez que ce fichier ne doit pas être modifié manuellement. En effet, il est généré par la commande **grub2-mkconfig**. La commande grub2-mkconfig prend en argument l'emplacement du fichier grub.cfg, par exemple :
- +
-^ Grub Legacy ^ GRUB 2 ^ +
-| title  | Menuentry | +
-| root (hd0,0) | set root=hd(0,1). Notez que GRUB 2 commence toujours la numérotation des disques à 0 mais numérote les partitions à partir de **1** | +
-| kernel | linux | +
-| initrd | initrd | +
-| lock | Ce paramètre n'existe plus sous GRUB 2. | +
-| rootnoverify (hd0,1) | Ce paramètre n'existe plus sous GRUB 2. Les paramètres des systèmes d'exploitation non Linux sont définit avec le paramètre **root** | +
- +
-Notez que ce fichier ne doit pas être modifié manuellement. En effet, il est généré par la commande **grub2-mkconfig** sous RHEL/CentOS 7. La commande grub2-mkconfig prend en argument l'emplacement du fichier destination, par exemple :+
  
   * grub2-mkconfig -o /boot/grub2/grub.cfg, ou   * grub2-mkconfig -o /boot/grub2/grub.cfg, ou
Ligne 361: Ligne 348:
 GRUB_ENABLE_BLSCFG=true GRUB_ENABLE_BLSCFG=true
 </code> </code>
- 
  
 <WRAP center round important 60%> <WRAP center round important 60%>
-**Important** : Notez que toute modification de ce fichier nécessite l'exécution de la commande **grub2-mkconfig** sous RHEL/CentOS 7 pour que les modifications soient prises en compte.+**Important** : Notez que toute modification de ce fichier nécessite l'exécution de la commande **grub2-mkconfig** pour que les modifications soient prises en compte.
 </WRAP> </WRAP>
  
Ligne 370: Ligne 356:
  
 ^  Directive  ^ Description ^ ^  Directive  ^ Description ^
-| GRUB_DEFAULT | Entrée du menu sélectionner par défaut | 
 | GRUB_TIMEOUT | Durée de l'affichage du menu avant le démarrage en utilisant la valeur de GRUB_DEFAULT | | GRUB_TIMEOUT | Durée de l'affichage du menu avant le démarrage en utilisant la valeur de GRUB_DEFAULT |
 | GRUB_DISTRIBUTOR | Ligne de commande qui génère le texte de l'entrée | | GRUB_DISTRIBUTOR | Ligne de commande qui génère le texte de l'entrée |
-GRUB_CMDLINE_LINUX_DEFAULT Paramètres passés au noyau lors d'un démarrage normal (Hors donc le mode secours) |+GRUB_DEFAULT Entrée du menu sélectionner par défaut | 
 +| GRUB_DISABLE_SUBMENU | Active ou désactive les sous-menus de GRUB2 | 
 +| GRUB_TERMINAL_OUTPUT | Spécifie le terminal par défaut |
 | GRUB_CMDLINE_LINUX | Paramètres passés au noyau peu importe le type de démarrage | | GRUB_CMDLINE_LINUX | Paramètres passés au noyau peu importe le type de démarrage |
-GRUB_TERMINAL Si non commentée, cette directive désactive le démarrage graphique | +GRUB_DISABLE_RECOVERY Active ou désactive la génération des entrées en mode **recovery** | 
-| GRUB_GFXMODE | Indique la résolution utilisée lors d'un démarrage graphique | +GRUB_BLSCFG Active ou désactive l'utilisation de la nouvelle spécification du gestionnaire de démarrage pour configurer celui-ci |
-| GRUB_DISABLE_LINUX_UUID | Si **true**, cette directive empêche l'utilisation de l'UUID de la partition | +
-| GRUB_DISABLE_LINUX_RECOVERY | Si **true**, cette directive empêche la génération des entrées en mode **recovery** | +
-GRUB_INIT_TUNE Permet d'obtenir un beep au démarrage de GRUB 2 | +
-| GRUB_BADRAM | Permet de spécifier de la mémoire défaillante |+
  
 ===Les fichiers du répertoire /etc/grub.d=== ===Les fichiers du répertoire /etc/grub.d===
Ligne 412: Ligne 395:
     * Ces deux fichiers sont fournis en tant que modèles à personnaliser.     * Ces deux fichiers sont fournis en tant que modèles à personnaliser.
  
-===Configurer l'Authentification===+===Le Fichier /boot/grub2/grubenv===
  
-La configuration de l'authentification de GRUB 2 est automatisée par le script **/etc/grub.d/01_users** :+Le fichier **/boot/grub2/grubenv** contient l'entrée du menu sauvegardée, référencée par la directive **GRUB_DEFAULT** du fichier **/etc/default/grub** :
  
 <code> <code>
-[root@centos8 ~]# cat /etc/grub.d/01_users +[root@centos8 ~]# cat /boot/grub2/grubenv 
-#!/bin/sh -e +# GRUB Environment Block
-cat << EOF +
-if [ -f \${prefix}/user.cfg ]; then +
-  source \${prefix}/user.cfg +
-  if [ -n "\${GRUB2_PASSWORD}" ]; then +
-    set superusers="root" +
-    export superusers +
-    password_pbkdf2 root \${GRUB2_PASSWORD} +
-  fi +
-fi +
-EOF +
-</code> +
- +
-Ce script est évidement présent dans le fichier **grub.cfg** : +
- +
-<code> +
-... +
-### BEGIN /etc/grub.d/01_users ### +
-if [ -f ${prefix}/user.cfg ]; then +
-  source ${prefix}/user.cfg +
-  if [ -n "${GRUB2_PASSWORD}" ]; then +
-    set superusers="root" +
-    export superusers +
-    password_pbkdf2 root ${GRUB2_PASSWORD} +
-  fi +
-fi +
-### END /etc/grub.d/01_users ### +
-... +
-</code> +
- +
-Ce script : +
- +
-  * teste si le fichier **/boot/grub2/user.cfg** existe puis si c'est le cas, +
-  * teste si la variable $GRUB2_PASSWORD est fixée puis si c'est le cas, +
-  * assigne le mot de passe à root. +
- +
-Pour créer le contenu du fichier **/boot/grub2/user.cfg**, il convient d'utiliser la commande **grub2-setpassword** : +
- +
-<code> +
-[root@centos8 ~]grub2-setpassword +
-Enter password: pass123 +
-Confirm password: pass123 +
-</code> +
- +
-Consultez maintenant le fichier **/boot/grub2/user.cfg** : +
- +
-<code> +
-[root@centos8 ~]# cat /boot/grub2/user.cfg +
-GRUB2_PASSWORD=grub.pbkdf2.sha512.10000.2BD9CC45BAE9738C9C916AEB734F52998B32C062C4F02101DB28BB057F8D95075900B4C8122C3B5E17C392E0B89F162520605BC19D2E4FF4D7FBA25FE98A935E. +
-E442FADF439D0A0FB3692E463B91B6BDD1978DD0A83ED1FF55B090C490AE52EA85FAD2A45634EC5C702A88DD556179998ED3F6FBD803CABBD93E88A10A51362F +
-</code> +
- +
-<WRAP center round todo 60%> +
-**A faire** : Redémarrez votre VM. Appuyez sur la touche **e** au début du processus de démarrage. Constatez que GRUB 2 demande un nom d'utilisateur ainsi qu'un mot de passe. Attention, le clavier est en QWERTY ( pass123 = pqss&é“ ). Notez qu'à ce stade le mot de passe ne protège que l'édition des entrées de GRUB2. +
-</WRAP> +
- +
-Pour pouvoir protéger le démarrage du système, il convient d'éditer le fichier **grub.cfg** en supprimant la directive **--unrestricted** de la ligne **menuentry** : +
- +
-<code> +
-[root@centos7 ~]# cat /boot/grub2/grub.cfg +
-... +
-### BEGIN /etc/grub.d/10_linux ### +
-menuentry 'CentOS Linux (3.10.0-693.21.1.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-327.el7.x86_64-advanced-e65fe7da-cda8-4f5a-a827-1b5cabe94bed'+
-        load_video +
-        set gfxpayload=keep +
-        insmod gzio +
-        insmod part_msdos +
-        insmod xfs +
-        set root='hd0,msdos1' +
-        if [ x$feature_platform_search_hint = xy ]; then +
-          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  2d947276-66e8-41f4-8475-b64b67d7a249 +
-        else +
-          search --no-floppy --fs-uuid --set=root 2d947276-66e8-41f4-8475-b64b67d7a249 +
-        fi +
-        linux16 /vmlinuz-3.10.0-693.21.1.el7.x86_64 root=UUID=e65fe7da-cda8-4f5a-a827-1b5cabe94bed ro rhgb quiet LANG=en_GB.UTF-8 +
-        initrd16 /initramfs-3.10.0-693.21.1.el7.x86_64.img +
-+
-... +
-</code> +
- +
-<code> +
-[root@centos7 ~]# vi /boot/grub2/grub.cfg +
-... +
-### BEGIN /etc/grub.d/10_linux ### +
-menuentry 'CentOS Linux (3.10.0-693.21.1.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.10.0-327.el7.x86_64-advanced-e65fe7da-cda8-4f5a-a827-1b5cabe94bed'+
-        load_video +
-        set gfxpayload=keep +
-        insmod gzio +
-        insmod part_msdos +
-        insmod xfs +
-        set root='hd0,msdos1' +
-        if [ x$feature_platform_search_hint = xy ]; then +
-          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  2d947276-66e8-41f4-8475-b64b67d7a249 +
-        else +
-          search --no-floppy --fs-uuid --set=root 2d947276-66e8-41f4-8475-b64b67d7a249 +
-        fi +
-        linux16 /vmlinuz-3.10.0-693.21.1.el7.x86_64 root=UUID=e65fe7da-cda8-4f5a-a827-1b5cabe94bed ro rhgb quiet LANG=en_GB.UTF-8 +
-        initrd16 /initramfs-3.10.0-693.21.1.el7.x86_64.img +
-+
-... +
-</code> +
- +
-[root@centos8 ~]# grubby --info DEFAULT +
-index=0 +
-kernel="/boot/vmlinuz-4.18.0-240.22.1.el8_3.x86_64" +
-args="ro crashkernel=auto resume=UUID=c8bb3f47-d67f-4b21-b781-766899dc83d4 rhgb quiet $tuned_params" +
-root="UUID=4c0cc28c-0d59-45be-bd73-d292b80be33c" +
-initrd="/boot/initramfs-4.18.0-240.22.1.el8_3.x86_64.img $tuned_initrd" +
-title="CentOS Linux (4.18.0-240.22.1.el8_3.x86_64) 8" +
-id="de79af4f226d480fa7d3fec4cabbf97a-4.18.0-240.22.1.el8_3.x86_64" +
- +
-[root@centos8 ~]# grub2-editenv - list+
 saved_entry=de79af4f226d480fa7d3fec4cabbf97a-4.18.0-240.22.1.el8_3.x86_64 saved_entry=de79af4f226d480fa7d3fec4cabbf97a-4.18.0-240.22.1.el8_3.x86_64
 kernelopts=root=UUID=4c0cc28c-0d59-45be-bd73-d292b80be33c ro crashkernel=auto resume=UUID=c8bb3f47-d67f-4b21-b781-766899dc83d4 rhgb quiet  kernelopts=root=UUID=4c0cc28c-0d59-45be-bd73-d292b80be33c ro crashkernel=auto resume=UUID=c8bb3f47-d67f-4b21-b781-766899dc83d4 rhgb quiet 
-boot_success=0+boot_success=1
 boot_indeterminate=0 boot_indeterminate=0
- +########################################################################################################################################## 
-<WRAP center round todo 60%> +########################################################################################################################################## 
-**A faire** : Redémarrez votre VM. Constatez que GRUB 2 demande un nom d'utilisateur ainsi qu'un mot de passe. Attention, le clavier est en QWERTY ( pass123 = pqss&é“ ). Notez que cette modification n'est pas permenante.  +########################################################################################################################################## 
-</WRAP> +########################################################################################################################################## 
 +########################################################################################################################################## 
 +############################################################[root@centos8 ~]# 
 +</code>
  
 ===Modifier la Configuration de GRUB 2 en Ligne de Commande=== ===Modifier la Configuration de GRUB 2 en Ligne de Commande===
Ligne 553: Ligne 427:
   * **Crtl-X** : démarrer avec la configuration modifiée,   * **Crtl-X** : démarrer avec la configuration modifiée,
   * **echap** : abandonner les modifications et retourner à l'interface menu de GRUB 2.   * **echap** : abandonner les modifications et retourner à l'interface menu de GRUB 2.
- 
-<WRAP center round important 60%> 
-**Important** : Certaines distributions, telle qu'Ubuntu, cache le menu de GRUB 2 derrière une interface graphique. Afin de voir ce menu, il convient d'appuyer sur la touche **Shift** pendant que la machine démarre. 
-</WRAP> 
  
 ====Chargeurs de Démarrages Alternatifs==== ====Chargeurs de Démarrages Alternatifs====
Ligne 616: Ligne 486:
 tmp.iso tmp.iso
 vg0_backup vg0_backup
 +
 +[root@centos8 tmp]# mv custom custom.gz
 +
 +[root@centos8 tmp]# gunzip custom.gz
 +
 [root@centos8 tmp]# mkdir initramfs [root@centos8 tmp]# mkdir initramfs
 +
 [root@centos8 tmp]# cd initramfs [root@centos8 tmp]# cd initramfs
 +
 [root@centos8 initramfs]# cpio -cid -I ../custom [root@centos8 initramfs]# cpio -cid -I ../custom
 216 blocks 216 blocks
 [root@centos8 initramfs]# ls [root@centos8 initramfs]# ls
-early_cpio  kernel+bin  dev  etc  init  lib  lib64  proc  root  run  sbin  shutdown  sys  sysroot  tmp  usr  var
 </code> </code>
  
Ligne 754: Ligne 631:
   * **halt.target** - arrête le système.   * **halt.target** - arrête le système.
   * **poweroff.target** - arrête le système et coupe le courant.   * **poweroff.target** - arrête le système et coupe le courant.
 +  * **shutdown.target** - arrête le système.
   * **rescue.target** - démarre le système en mode single-user (seul root peut s'y connecter). Tous les systèmes de fichiers sont montés mais le réseau n'est pas démarré.   * **rescue.target** - démarre le système en mode single-user (seul root peut s'y connecter). Tous les systèmes de fichiers sont montés mais le réseau n'est pas démarré.
   * **emergency.target** - démarre le système en mode single-user (seul root peut s'y connecter). Uniquement le système de fichiers racine est monté en mode lecture seule. Le réseau n'est pas démarré.   * **emergency.target** - démarre le système en mode single-user (seul root peut s'y connecter). Uniquement le système de fichiers racine est monté en mode lecture seule. Le réseau n'est pas démarré.
Ligne 789: Ligne 667:
 </code> </code>
  
-====La Commande systemctl====+====LAB #1 - La Commande systemctl====
  
 Pour visualiser la liste des Unités, il convient d'utiliser la commande **systemctl** avec l'option **list-units** : Pour visualiser la liste des Unités, il convient d'utiliser la commande **systemctl** avec l'option **list-units** :
Ligne 1013: Ligne 891:
 Dans la colonne STATE on voit les mots **static** et **generated**.  Dans la colonne STATE on voit les mots **static** et **generated**. 
  
-===STATE = static===+  * STATE = static 
 +    * Ceci implique que l'Unité ne peut ni être démarrée, ni être arrêtée par l'administrateur. Le démarrage et l'arrêt d'une telle Unité est effectué par le système. En règle générale, les Unités dont le STATE est static sont des dépendances d'autres Unité
  
-Ceci implique que l'Unité ne peut ni être démarrée, ni être arrêtée par l'administrateur. Le démarrage et l'arrêt d'une telle Unité est effectué par le système. En règle générale, les Unités dont le STATE est static sont des dépendances d'autres Unité +  * STATE = generated 
- +    Ceci implique que le fichier a été généré automatiquement en utilisant les informations dans le fichier **/etc/fstab** lors du démarrage du système. Dans le cas d'un point de montage, l'exécutable respopnsable de la génération du fichier est **/lib/systemd/system-generators/systemd-fstab-generator** :
-===STATE = generated=== +
- +
-Ceci implique que le fichier a été généré automatiquement en utilisant les informations dans le fichier **/etc/fstab** lors du démarrage du système. Dans le cas d'un point de montage, l'exécutable respopnsable de la génération du fichier est **/lib/systemd/system-generators/systemd-fstab-generator** :+
  
 <code> <code>
Ligne 1047: Ligne 923:
 -rwxr-xr-x. 1 root root  17024 Apr  7 16:56 systemd-veritysetup-generator -rwxr-xr-x. 1 root root  17024 Apr  7 16:56 systemd-veritysetup-generator
 </code> </code>
- 
-===Options de la Commande systemctl=== 
  
 Les options de la commande **systemctl** sont : Les options de la commande **systemctl** sont :
Ligne 1114: Ligne 988:
 </code> </code>
  
-====Fichiers de Configuration====+====LAB #2 - Fichiers de Configuration====
  
-===Fichiers de Configuration par Défaut===+===2.1 - Fichiers de Configuration par Défaut===
  
 Les fichiers de configuration des Cibles et fichiers de configuration des Unités installés par des paquets se trouvent dans le répertoire **/usr/lib/systemd/system** : Les fichiers de configuration des Cibles et fichiers de configuration des Unités installés par des paquets se trouvent dans le répertoire **/usr/lib/systemd/system** :
Ligne 1205: Ligne 1079:
 </WRAP> </WRAP>
  
-===Surchargement des Fichiers de Configuration par Défaut===+Prenons le cas du service **sshd** qui est configuré par le fichier **/usr/lib/systemd/system/sshd.service** : 
 + 
 +<code> 
 +[root@centos8 ~]# cat /usr/lib/systemd/system/sshd.service 
 +[Unit] 
 +Description=OpenSSH server daemon 
 +Documentation=man:sshd(8) man:sshd_config(5) 
 +After=network.target sshd-keygen.target 
 +Wants=sshd-keygen.target 
 + 
 +[Service] 
 +Type=notify 
 +EnvironmentFile=-/etc/crypto-policies/back-ends/opensshserver.config 
 +EnvironmentFile=-/etc/sysconfig/sshd 
 +ExecStart=/usr/sbin/sshd -D $OPTIONS $CRYPTO_POLICY 
 +ExecReload=/bin/kill -HUP $MAINPID 
 +KillMode=process 
 +Restart=on-failure 
 +RestartSec=42s 
 + 
 +[Install] 
 +WantedBy=multi-user.target 
 +</code> 
 + 
 +Dans le fichier on peut noter la présence des lignes suivantes dans la section **[Unit]** : 
 + 
 +  * **Description=OpenSSH server daemon**, 
 +    * Cette directive est utilisée pour donner une courte description des fonctionnalités de l'Unité, 
 +  * **Documentation=man:sshd(8) man:sshd_config(5)**, 
 +    * Cette directive stipule les chapitres des manuels et les URLs contenant de l'information en relation avec l'Unité, 
 +  * **After=network.target sshd-keygen.target**, 
 +    * Cette directive indique les cibles qui devraient être atteintes et les Unités qui devraient être démarrées avant l'Unité sshd. Par contre, cette directive ne spécifie pas une dépendance, 
 +  * **Wants=sshd-keygen.target**, 
 +    * Cette directive stipule une dépendance douce. Autrement dit, Systemd essayera de démarrer l'Unité **sshd-keygen.target** mais si ce démarrage est en échec, l'Unité sshd sera démarré. 
 + 
 +Dans le fichier on peut aussi noter la présence des lignes suivantes dans la section **[Service]** : 
 + 
 +  * **Type=notify**, 
 +    * Cette directive indique que le service informera Systemd quand son démarrage a terminé, 
 +  * **ExecStart=/usr/sbin/sshd -D $OPTIONS $CRYPTO_POLICY**, 
 +     * Cette directive définit l'exécutable à lancer, 
 +  * **ExecReload=/bin/kill -HUP $MAINPID**, 
 +    * Cette directive indique la commande necéssaire pour redémarrer le service, 
 +  * **KillMode=process**, 
 +    * Cette directive indique comment les processus du service doivent être arrêtés. La valeur de **process** implique l'utilisation de SIGTERM suivi par SIGHUP, 
 +  * **Restart=on-failure**, 
 +    * Cette ligne indique que le service doit être re-démarré en cas d'arrêt de celui-ci. 
 +  * **RestartSec=42s**, 
 +    * Cette directive stipule le temps d'attente entre l'arrêt du service et le redémarrage par Systemd, 
 + 
 +Dernièrement on note la présence de la ligne suivante dans la section **[Install]** : 
 + 
 +  * **WantedBy=multi-user.target**, 
 +    * Cette directive indique la Cible dans laquelle le service doit être démarré. La présence de cette directive crée un lien symbolique dans le répertoire **/etc/systemd/system/multi-user.target.wants** qui pointe vers ce fichier. 
 + 
 +Pour consulter **l'ensemble** des directives de configuration ainsi que leurs valeurs d'une Unité, il convient d'utiliser la commande **systemctl show**  en spécifiant l'Unité concernée : 
 + 
 +<code> 
 +[root@centos8 ~]# systemctl show sshd 
 +Type=notify 
 +Restart=on-failure 
 +NotifyAccess=main 
 +RestartUSec=42s 
 +TimeoutStartUSec=1min 30s 
 +TimeoutStopUSec=1min 30s 
 +RuntimeMaxUSec=infinity 
 +WatchdogUSec=0 
 +WatchdogTimestamp=Thu 2021-06-03 15:09:54 EDT 
 +WatchdogTimestampMonotonic=12502561 
 +PermissionsStartOnly=no 
 +RootDirectoryStartOnly=no 
 +RemainAfterExit=no 
 +GuessMainPID=yes 
 +MainPID=902 
 +ControlPID=0 
 +FileDescriptorStoreMax=0 
 +NFileDescriptorStore=0 
 +StatusErrno=0 
 +Result=success 
 +UID=[not set] 
 +GID=[not set] 
 +NRestarts=0 
 +ExecMainStartTimestamp=Thu 2021-06-03 15:09:54 EDT 
 +ExecMainStartTimestampMonotonic=12446178 
 +ExecMainExitTimestampMonotonic=0 
 +ExecMainPID=902 
 +ExecMainCode=0 
 +ExecMainStatus=0 
 +ExecStart={ path=/usr/sbin/sshd ; argv[]=/usr/sbin/sshd -D $OPTIONS $CRYPTO_POLICY ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 } 
 +ExecReload={ path=/bin/kill ; argv[]=/bin/kill -HUP $MAINPID ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 } 
 +Slice=system.slice 
 +ControlGroup=/system.slice/sshd.service 
 +MemoryCurrent=6270976 
 +CPUUsageNSec=[not set] 
 +EffectiveCPUs= 
 +EffectiveMemoryNodes= 
 +TasksCurrent=1 
 +IPIngressBytes=18446744073709551615 
 +IPIngressPackets=18446744073709551615 
 +IPEgressBytes=18446744073709551615 
 +IPEgressPackets=18446744073709551615 
 +Delegate=no 
 +CPUAccounting=no 
 +CPUWeight=[not set] 
 +StartupCPUWeight=[not set] 
 +CPUShares=[not set] 
 +StartupCPUShares=[not set] 
 +CPUQuotaPerSecUSec=infinity 
 +CPUQuotaPeriodUSec=infinity 
 +AllowedCPUs= 
 +AllowedMemoryNodes= 
 +IOAccounting=no 
 +IOWeight=[not set] 
 +StartupIOWeight=[not set] 
 +BlockIOAccounting=no 
 +BlockIOWeight=[not set] 
 +lines 1-57 
 +</code> 
 + 
 +Pour consulter la liste des dépendances d'une Unité, il convient d'utiliser **systemctl list-dependancies** en spécifiant l'Unité concernée : 
 + 
 +<code> 
 +[root@centos8 ~]# systemctl list-dependencies sshd.service 
 +sshd.service 
 +● ├─system.slice 
 +● ├─sshd-keygen.target 
 +● │ ├─sshd-keygen@ecdsa.service 
 +● │ ├─sshd-keygen@ed25519.service 
 +● │ └─sshd-keygen@rsa.service 
 +● └─sysinit.target 
 +●   ├─dev-hugepages.mount 
 +●   ├─dev-mqueue.mount 
 +●   ├─dracut-shutdown.service 
 +●   ├─import-state.service 
 +●   ├─iscsi-onboot.service 
 +●   ├─kmod-static-nodes.service 
 +●   ├─ldconfig.service 
 +●   ├─loadmodules.service 
 +●   ├─lvm2-lvmpolld.socket 
 +●   ├─lvm2-monitor.service 
 +●   ├─nis-domainname.service 
 +●   ├─plymouth-read-write.service 
 +●   ├─plymouth-start.service 
 +●   ├─proc-sys-fs-binfmt_misc.automount 
 +●   ├─rngd.service 
 +●   ├─selinux-autorelabel-mark.service 
 +●   ├─sys-fs-fuse-connections.mount 
 +●   ├─sys-kernel-config.mount 
 +●   ├─sys-kernel-debug.mount 
 +●   ├─systemd-ask-password-console.path 
 +●   ├─systemd-binfmt.service 
 +●   ├─systemd-firstboot.service 
 +●   ├─systemd-hwdb-update.service 
 +●   ├─systemd-journal-catalog-update.service 
 +●   ├─systemd-journal-flush.service 
 +●   ├─systemd-journald.service 
 +●   ├─systemd-machine-id-commit.service 
 +●   ├─systemd-modules-load.service 
 +●   ├─systemd-random-seed.service 
 +●   ├─systemd-sysctl.service 
 +●   ├─systemd-sysusers.service 
 +●   ├─systemd-tmpfiles-setup-dev.service 
 +●   ├─systemd-tmpfiles-setup.service 
 +●   ├─systemd-udev-trigger.service 
 +●   ├─systemd-udevd.service 
 +●   ├─systemd-update-done.service 
 +●   ├─systemd-update-utmp.service 
 +●   ├─cryptsetup.target 
 +●   ├─local-fs.target 
 +●   │ ├─-.mount 
 +●   │ ├─boot.mount 
 +●   │ └─systemd-remount-fs.service 
 +●   └─swap.target 
 +●     └─dev-disk-by\x2duuid-c8bb3f47\x2dd67f\x2d4b21\x2db781\x2d766899dc83d4.swap 
 +</code> 
 + 
 +===2.2 - Surchargement des Fichiers de Configuration par Défaut===
  
 Les fichiers de configuration par défaut peuvent aussi être surchargés par des fichiers dans d'autres répertoires : Les fichiers de configuration par défaut peuvent aussi être surchargés par des fichiers dans d'autres répertoires :
Ligne 1242: Ligne 1292:
 </code> </code>
  
-====La Commande systemd-analyze====+====LAB #3 - La Commande systemd-analyze====
  
 Pour avoir une évaluation du temps de démarrage, il convient d'utiliser la commande suivante : Pour avoir une évaluation du temps de démarrage, il convient d'utiliser la commande suivante :
Ligne 1316: Ligne 1366:
 </code> </code>
  
-===Options de la Commande===+L'option **critical-chain** de la commande **systemd-analyze** permet de voir l'enchaînement des événements qui amènent au chargement de l'Unité qui est passée en argument : 
 + 
 +<code> 
 +[root@centos8 ~]# systemd-analyze critical-chain sshd.service 
 +The time after the unit is active or started is printed after the "@" character. 
 +The time the unit takes to start is printed after the "+" character. 
 + 
 +sshd.service +56ms 
 +└─network.target @3.799s 
 +  └─NetworkManager.service @3.719s +77ms 
 +    └─network-pre.target @3.718s 
 +      └─firewalld.service @3.004s +713ms 
 +        └─polkit.service @2.397s +605ms 
 +          └─basic.target @2.392s 
 +            └─sockets.target @2.392s 
 +              └─sssd-kcm.socket @2.391s 
 +                └─sysinit.target @2.379s 
 +                  └─systemd-update-utmp.service @2.370s +8ms 
 +                    └─auditd.service @2.317s +52ms 
 +                      └─systemd-tmpfiles-setup.service @2.118s +196ms 
 +                        └─import-state.service @2.070s +46ms 
 +                          └─local-fs.target @2.069s 
 +                            └─boot.mount @2.006s +62ms 
 +                              └─systemd-fsck@dev-disk-by\x2duuid-2ae4c035\x2d9244\x2d458c\x2d82c5\x2da49ae169cdb6.service @1.943s +54ms 
 +                                └─local-fs-pre.target @1.942s 
 +                                  └─lvm2-monitor.service @1.319s +622ms 
 +                                    └─dm-event.socket @1.317s 
 +                                      └─-.mount 
 +                                        └─system.slice 
 +                                          └─-.slice 
 +</code>
  
 Les options de la commande **systemd-analyze** sont : Les options de la commande **systemd-analyze** sont :
Ligne 1351: Ligne 1431:
 </code> </code>
  
-====Consulter les Informations d'une Unité==== +====LAB #- Les Cibles Systemd====
- +
-Le service **sshd** est configuré par le fichier **/usr/lib/systemd/system/sshd.service** : +
- +
-<code> +
-[root@centos8 ~]cat /usr/lib/systemd/system/sshd.service +
-[Unit] +
-Description=OpenSSH server daemon +
-Documentation=man:sshd(8) man:sshd_config(5) +
-After=network.target sshd-keygen.target +
-Wants=sshd-keygen.target +
- +
-[Service] +
-Type=notify +
-EnvironmentFile=-/etc/crypto-policies/back-ends/opensshserver.config +
-EnvironmentFile=-/etc/sysconfig/sshd +
-ExecStart=/usr/sbin/sshd -D $OPTIONS $CRYPTO_POLICY +
-ExecReload=/bin/kill -HUP $MAINPID +
-KillMode=process +
-Restart=on-failure +
-RestartSec=42s +
- +
-[Install] +
-WantedBy=multi-user.target +
-</code> +
- +
-Dans le fichier on peut noter la présence des lignes suivantes dans la section **[Unit]** : +
- +
-  * **Description=OpenSSH server daemon**, +
-    * Cette directive est utilisée pour donner une courte description des fonctionalités de l'Unité, +
-  * **Documentation=man:sshd(8) man:sshd_config(5)**, +
-    * Cette directive stipule les chapitres des manuels et les URLs contenant de l'information en relation avec l'Unité, +
-  * **After=network.target sshd-keygen.target**, +
-    * Cette directive indique les cibles qui devraient être atteients et les Unités qui devraient être démarrées avant l'Unité sshd. Par contre, cette directive ne spécifie pas une dépendance, +
-  * **Wants=sshd-keygen.target**, +
-    * Cette directive stipule une dépendance douce. Autrement dit, Systemd essayera de démarrer l'Unité **sshd-keygen.target** mais si ce démarrage est en échec, l'Unité sshd sera démarré. +
- +
-Dans le fichier on peut aussi noter la présence des lignes suivantes dans la section **[Service]** : +
- +
-  * **Type=notify**, +
-    * Cette directive indique que le service informera Systemd quand son démarrage a terminé, +
-  * **ExecStart=/usr/sbin/sshd -D $OPTIONS $CRYPTO_POLICY**, +
-     * Cette directive définit l'exécutable à lancer, +
-  * **ExecReload=/bin/kill -HUP $MAINPID**, +
-    * Cette directive indique la commande necéssaire pour redémarrer le service, +
-  * **KillMode=process**, +
-    * Cette directive indique comment les processus du service doivent être arrêtés. La valeur de **process** implique l'utilisation de SIGTERM suivi par SIGHUP, +
-  * **Restart=on-failure**, +
-    * Cette ligne indique que le service doit être re-démarré en cas d'arrêt de celui-ci. +
-  * **RestartSec=42s**, +
-    * Cette directive stipule le temps d'attente entre l'arrêt du service et le redémarrage par Systemd, +
- +
-Dernièrement on note la présence de la ligne suivante dans la section **[Install]** : +
- +
-  * **WantedBy=multi-user.target**, +
-    * Cette directive indique la Cible dans laquelle le service doit être démarré. La présence de cette directive crée un lien symbolique dans le répertoire **/etc/systemd/system/multi-user.target.wants** qui pointe vers ce fichier, +
- +
-Pour consulter la liste des dépendances de cette Unité, il convient d'utiliser **systemctl list-dependancies** en spécifiant l'Unité concernée : +
- +
-<code> +
-[root@centos8 ~]# systemctl list-dependencies sshd.service +
-sshd.service +
-● ├─system.slice +
-● ├─sshd-keygen.target +
-● │ ├─sshd-keygen@ecdsa.service +
-● │ ├─sshd-keygen@ed25519.service +
-● │ └─sshd-keygen@rsa.service +
-● └─sysinit.target +
-●   ├─dev-hugepages.mount +
-●   ├─dev-mqueue.mount +
-●   ├─dracut-shutdown.service +
-●   ├─import-state.service +
-●   ├─iscsi-onboot.service +
-●   ├─kmod-static-nodes.service +
-●   ├─ldconfig.service +
-●   ├─loadmodules.service +
-●   ├─lvm2-lvmpolld.socket +
-●   ├─lvm2-monitor.service +
-●   ├─nis-domainname.service +
-●   ├─plymouth-read-write.service +
-●   ├─plymouth-start.service +
-●   ├─proc-sys-fs-binfmt_misc.automount +
-●   ├─rngd.service +
-●   ├─selinux-autorelabel-mark.service +
-●   ├─sys-fs-fuse-connections.mount +
-●   ├─sys-kernel-config.mount +
-●   ├─sys-kernel-debug.mount +
-●   ├─systemd-ask-password-console.path +
-●   ├─systemd-binfmt.service +
-●   ├─systemd-firstboot.service +
-●   ├─systemd-hwdb-update.service +
-●   ├─systemd-journal-catalog-update.service +
-●   ├─systemd-journal-flush.service +
-●   ├─systemd-journald.service +
-●   ├─systemd-machine-id-commit.service +
-●   ├─systemd-modules-load.service +
-●   ├─systemd-random-seed.service +
-●   ├─systemd-sysctl.service +
-●   ├─systemd-sysusers.service +
-●   ├─systemd-tmpfiles-setup-dev.service +
-●   ├─systemd-tmpfiles-setup.service +
-●   ├─systemd-udev-trigger.service +
-●   ├─systemd-udevd.service +
-●   ├─systemd-update-done.service +
-●   ├─systemd-update-utmp.service +
-●   ├─cryptsetup.target +
-●   ├─local-fs.target +
-●   │ ├─-.mount +
-●   │ ├─boot.mount +
-●   │ └─systemd-remount-fs.service +
-●   └─swap.target +
-●     └─dev-disk-by\x2duuid-c8bb3f47\x2dd67f\x2d4b21\x2db781\x2d766899dc83d4.swap +
-</code> +
- +
-L'option **critical-chain** de la commande **systemd-analyze** permet de voir l'enchaînement des événements qui amènent au chargement de l'Unité qui est passée en argument : +
- +
-<code> +
-[root@centos8 ~]# systemd-analyze critical-chain sshd.service +
-The time after the unit is active or started is printed after the "@" character. +
-The time the unit takes to start is printed after the "+" character. +
- +
-sshd.service +56ms +
-└─network.target @3.799s +
-  └─NetworkManager.service @3.719s +77ms +
-    └─network-pre.target @3.718s +
-      └─firewalld.service @3.004s +713ms +
-        └─polkit.service @2.397s +605ms +
-          └─basic.target @2.392s +
-            └─sockets.target @2.392s +
-              └─sssd-kcm.socket @2.391s +
-                └─sysinit.target @2.379s +
-                  └─systemd-update-utmp.service @2.370s +8ms +
-                    └─auditd.service @2.317s +52ms +
-                      └─systemd-tmpfiles-setup.service @2.118s +196ms +
-                        └─import-state.service @2.070s +46ms +
-                          └─local-fs.target @2.069s +
-                            └─boot.mount @2.006s +62ms +
-                              └─systemd-fsck@dev-disk-by\x2duuid-2ae4c035\x2d9244\x2d458c\x2d82c5\x2da49ae169cdb6.service @1.943s +54ms +
-                                └─local-fs-pre.target @1.942s +
-                                  └─lvm2-monitor.service @1.319s +622ms +
-                                    └─dm-event.socket @1.317s +
-                                      └─-.mount +
-                                        └─system.slice +
-                                          └─-.slice +
-</code> +
- +
-====Les Cibles====+
  
 Chaque Cible est décrite par un fichier de configuration : Chaque Cible est décrite par un fichier de configuration :
Ligne 1525: Ligne 1459:
  
   * **Requires=multi-user.target**,   * **Requires=multi-user.target**,
-     * Cette ligne indique que le **graphical.target** ne peut pas être atteint si le **multi-user.target** n'a pas été atteint aupréalable,+     * Cette ligne indique que le **graphical.target** ne peut pas être atteint si le **multi-user.target** n'a pas été atteint au préalable,
   * **After=multi-user.target rescue.service rescue.target display-manager.service**,   * **After=multi-user.target rescue.service rescue.target display-manager.service**,
     * Cette ligne indique le **multi-user.target** et **rescue.target** doivent d'abord être atteints et que les services **rescue.service** et **display-manager.service** doivent d'abord être démarrés,     * Cette ligne indique le **multi-user.target** et **rescue.target** doivent d'abord être atteints et que les services **rescue.service** et **display-manager.service** doivent d'abord être démarrés,
Ligne 1533: Ligne 1467:
     * Cette ligne indique quel service doit être démarré.     * Cette ligne indique quel service doit être démarré.
  
-===Contrôler les dépendances d'une Cible===+===4.1 - Contrôler les dépendances d'une Cible===
  
 Les dépendances d'une Cible peuvent être consultées en utilisant la commande **systemctl list-dependencies** : Les dépendances d'une Cible peuvent être consultées en utilisant la commande **systemctl list-dependencies** :
Ligne 1659: Ligne 1593:
 </code> </code>
  
-====La Cible par Défaut====+===4.2 - La Cible par Défaut===
  
-===Consulter la Cible par Défaut===+==Consulter la Cible par Défaut==
  
 Pour consulter la cible par défaut, il convient d'utiliser la commande **systemctl get-default** : Pour consulter la cible par défaut, il convient d'utiliser la commande **systemctl get-default** :
Ligne 1677: Ligne 1611:
 </code> </code>
  
-===Modifier la Cible par Défaut===+==Modifier la Cible par Défaut==
  
 Pour modifier la Cible par défaut avec une prise en compte lors du **prochain** démarrage, il convient d'utiliser la commande **systemctl set-default** : Pour modifier la Cible par défaut avec une prise en compte lors du **prochain** démarrage, il convient d'utiliser la commande **systemctl set-default** :
Ligne 1694: Ligne 1628:
 </code> </code>
  
 +==Modifier la Cible en Cours==
  
 +Il est possible de modifier la cible actuellement en cours en utilisant la commande **systemctl isolate** :
  
 +<code>
 +[root@centos8 ~]# systemctl isolate rescue
 +[root@centos8 ~]# systemctl list-units --type target | egrep "eme|res|gra|mul" | head -1
 +rescue.target       loaded active active Rescue Mode             
 +[root@centos8 ~]# runlevel
 +3 1
 +[root@centos8 ~]# who -r
 +         run-level 1  2021-06-15 04:22                   last=3
 +</code>
  
 +<code>
 +[root@centos8 ~]# systemctl isolate multi-user
 +[root@centos8 ~]# systemctl list-units --type target | egrep "eme|res|gra|mul" | head -1
 +multi-user.target      loaded active active Multi-User System          
 +[root@centos8 ~]# runlevel
 +1 3
 +[root@centos8 ~]# who -r
 +         run-level 3  2021-06-15 04:24                   last=1
 +</code>
  
 +====LAB #5 - Gestion des Services====
  
- +===5.1 - Gestion des Instances Uniques===
- +
- +
- +
- +
-====Gestion des Services==== +
- +
-===Gestion des Instances Uniques===+
  
 Commencez par installer le paquet **httpd** : Commencez par installer le paquet **httpd** :
Ligne 1842: Ligne 1790:
 </code> </code>
  
-===Gestion des Instances Multiples===+===5.2 - Gestion d'Instances Multiples===
  
-Systemd permet l'utilisation des gabarits (templates) des fichiers de configuration des Unités. De cette façon il est possible de faire co-exister deux ou plusieurs instances du même service. Un gabarit est reconnaisable par le caractère **@** qui est placé juste avant le point dans le nom du fichier :+Systemd permet l'utilisation des gabarits (templates) des fichiers de configuration des Unités. De cette façon il est possible de faire coexister deux ou plusieurs instances du même service. Un gabarit est reconnaissable par le caractère **@** qui est placé juste avant le point dans le nom du fichier :
  
 <code> <code>
Ligne 1875: Ligne 1823:
 Une instance créée à partir de ce gabarit devrait avoir un nom sous la forme suivante : Une instance créée à partir de ce gabarit devrait avoir un nom sous la forme suivante :
  
-  httpd@<nom_instance>.service+<code> 
 +httpd@<nom_instance>.service 
 +</code>
  
-Dans ce fichier on peut constater l'utilisation d'un **identifier** sous la forme de **%i**. Les identifiers sont de deux types - un dit **échapé** où les caractères non-ASCII alphanumérique sont remplacés par **escapes** de type langage C et l'autre non-échapé :+Dans ce fichier on peut constater l'utilisation d'un **identifier** sous la forme de **%i**. Les identifiers sont de deux types - un dit **échappé** où les caractères non-ASCII alphanumérique sont remplacés par **escapes** de type langage C et l'autre non-échappé :
  
-  * %n : est remplacé par le nom complet échapé de l'Unité. +  * %n : est remplacé par le nom complet échappé de l'Unité. 
-  * %N : est remplacé par le nom complet non-échapé de l'Unité. +  * %N : est remplacé par le nom complet non-échappé de l'Unité. 
-  * %p : est remplacé par le préfixe échapé de l'Unité, c'est-à-dire la partie **avant** le caractère @. +  * %p : est remplacé par le préfixe échappé de l'Unité, c'est-à-dire la partie **avant** le caractère @. 
-  * %P : est remplacé par le préfixe non-échapé de l'Unité, c'est-à-dire la partie **avant** le caractère @. +  * %P : est remplacé par le préfixe non-échappé de l'Unité, c'est-à-dire la partie **avant** le caractère @. 
-  * %i : est remplacé par le nom de l'instance échapé de l'Unité, c'est-à-dire la partie **après** le caractère @ et **avant** le point. +  * %i : est remplacé par le nom de l'instance échappé de l'Unité, c'est-à-dire la partie **après** le caractère @ et **avant** le point. 
-  * %I : est remplacé par le nom de l'instance non-échapé de l'Unité, c'est-à-dire la partie **après** le caractère @ et **avant** le point. +  * %I : est remplacé par le nom de l'instance non-échappé de l'Unité, c'est-à-dire la partie **après** le caractère @ et **avant** le point. 
-  * %f : est remplacé par le préfixe non-échappé ou le nom de l'instance non-échapé préfixé par le caractère **/**.+  * %f : est remplacé par le préfixe non-échappé ou le nom de l'instance non-échappé préfixé par le caractère **/**.
   * %c : est remplacé par le CGroup de l'Unité sans le chemin /sys/fs/cgroup/systemd/.   * %c : est remplacé par le CGroup de l'Unité sans le chemin /sys/fs/cgroup/systemd/.
   * %u : est remplacé par le nom de l'utilisateur responsable de l'exécution de l'Unité.   * %u : est remplacé par le nom de l'utilisateur responsable de l'exécution de l'Unité.
   * %U : est remplacé par l'UID de l'utilisateur responsable de l'exécution de l'Unité.   * %U : est remplacé par l'UID de l'utilisateur responsable de l'exécution de l'Unité.
   * %H : est remplacé par le nom d'hôte sur lequel est exécuté l'Unité.   * %H : est remplacé par le nom d'hôte sur lequel est exécuté l'Unité.
-  * %% : est remplac" par le caractère **%**.+  * %% : est remplacé" par le caractère **%**.
  
 Créez maintenant deux copies du fichier **/usr/lib/systemd/system/httpd@.service** : Créez maintenant deux copies du fichier **/usr/lib/systemd/system/httpd@.service** :
Ligne 1908: Ligne 1858:
 Editez la directive **Listen** du fichier **/etc/httpd/conf/instance01.conf** et ajoutez la directive **PidFile** : Editez la directive **Listen** du fichier **/etc/httpd/conf/instance01.conf** et ajoutez la directive **PidFile** :
  
 +<code>
 [root@centos8 ~]# vi /etc/httpd/conf/instance01.conf  [root@centos8 ~]# vi /etc/httpd/conf/instance01.conf 
 [root@centos8 ~]# more /etc/httpd/conf/instance01.conf  [root@centos8 ~]# more /etc/httpd/conf/instance01.conf 
Ligne 2085: Ligne 2036:
 </code> </code>
  
 +===5.3 - Interdire la Modification du Statut d'un Service===
  
 +Il est possible d'interdire la modification en utilisant la commande **systemctl mask**:
  
 +<code>
 +[root@centos8 ~]# systemctl status httpd.service
 +● httpd.service - The Apache HTTP Server
 +   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
 +   Active: inactive (dead)
 +     Docs: man:httpd.service(8)
  
 +Jun 07 18:27:25 centos8.ittraining.loc httpd[58535]: Server configured, listening on: port 80
 +Jun 07 18:27:29 centos8.ittraining.loc systemd[1]: Stopping The Apache HTTP Server...
 +Jun 07 18:27:30 centos8.ittraining.loc systemd[1]: httpd.service: Succeeded.
 +Jun 07 18:27:30 centos8.ittraining.loc systemd[1]: Stopped The Apache HTTP Server.
 +Jun 07 18:27:32 centos8.ittraining.loc systemd[1]: Starting The Apache HTTP Server...
 +Jun 07 18:27:32 centos8.ittraining.loc systemd[1]: Started The Apache HTTP Server.
 +Jun 07 18:27:32 centos8.ittraining.loc httpd[58760]: Server configured, listening on: port 80
 +Jun 07 18:27:34 centos8.ittraining.loc systemd[1]: Stopping The Apache HTTP Server...
 +Jun 07 18:27:36 centos8.ittraining.loc systemd[1]: httpd.service: Succeeded.
 +Jun 07 18:27:36 centos8.ittraining.loc systemd[1]: Stopped The Apache HTTP Server.
 +
 +[root@centos8 ~]# systemctl mask httpd.service
 +Created symlink /etc/systemd/system/httpd.service → /dev/null.
 +
 +[root@centos8 ~]# systemctl enable httpd.service
 +Failed to enable unit: Unit file /etc/systemd/system/httpd.service is masked.
 +
 +[root@centos8 ~]# systemctl start httpd.service
 +Failed to start httpd.service: Unit httpd.service is masked.
 +</code>
 +
 +Pour autoriser de nouveau les modifications, il convient d'utiliser la commande **systemctl unmask** :
 +
 +<code>
 +[root@centos8 ~]# systemctl unmask httpd.service
 +Removed /etc/systemd/system/httpd.service.
 +
 +[root@centos8 ~]# systemctl enable httpd.service
 +Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
 +
 +[root@centos8 ~]# systemctl start httpd.service
 +
 +[root@centos8 ~]# systemctl status httpd.service
 +● httpd.service - The Apache HTTP Server
 +   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
 +   Active: active (running) since Mon 2021-06-07 18:30:59 EDT; 5s ago
 +     Docs: man:httpd.service(8)
 + Main PID: 59101 (httpd)
 +   Status: "Started, listening on: port 80"
 +    Tasks: 213 (limit: 23719)
 +   Memory: 39.4M
 +   CGroup: /system.slice/httpd.service
 +           ├─59101 /usr/sbin/httpd -DFOREGROUND
 +           ├─59102 /usr/sbin/httpd -DFOREGROUND
 +           ├─59103 /usr/sbin/httpd -DFOREGROUND
 +           ├─59104 /usr/sbin/httpd -DFOREGROUND
 +           └─59105 /usr/sbin/httpd -DFOREGROUND
 +
 +Jun 07 18:30:59 centos8.ittraining.loc systemd[1]: Starting The Apache HTTP Server...
 +Jun 07 18:30:59 centos8.ittraining.loc systemd[1]: Started The Apache HTTP Server.
 +Jun 07 18:31:00 centos8.ittraining.loc httpd[59101]: Server configured, listening on: port 80
 +</code>
  
 =====Arrêt du Système===== =====Arrêt du Système=====
 +
 +Sous RHEL / CentOS 8 les commandes **halt**, **poweroff**, **reboot** et **shutdown** sont des liens symboliques vers **/bin/systemctl** :
 +
 +<code>
 +[root@centos8 ~]# ls -l /usr/sbin/shutdown /usr/sbin/halt /usr/sbin/poweroff /usr/sbin/reboot
 +lrwxrwxrwx. 1 root root 16 Apr  7 16:55 /usr/sbin/halt -> ../bin/systemctl
 +lrwxrwxrwx. 1 root root 16 Apr  7 16:55 /usr/sbin/poweroff -> ../bin/systemctl
 +lrwxrwxrwx. 1 root root 16 Apr  7 16:55 /usr/sbin/reboot -> ../bin/systemctl
 +lrwxrwxrwx. 1 root root 16 Apr  7 16:55 /usr/sbin/shutdown -> ../bin/systemctl
 +</code>
 +
 +La manière recommendée d'utiliser ces commandes est donc :
 +
 +  * systemctl halt
 +  * systemctl poweroff
 +  * systemctl reboot
 +  * systemctl shutdown
 +
 +Il est cependant toujours possibles d'utiliser les commandes **halt**, **poweroff**, **reboot** et **shutdown**.
  
 ====La Commande shutdown==== ====La Commande shutdown====
Ligne 2102: Ligne 2132:
 La commande utilisée pour arrêter le système est la commande **shutdown** : La commande utilisée pour arrêter le système est la commande **shutdown** :
  
-  shutdown [-t sec] [-akrhHPfnc] heure [message]+  shutdown [-t sec] [-HPrhkc] heure [message]
  
 ===Options de la commande=== ===Options de la commande===
Ligne 2109: Ligne 2139:
  
 <code> <code>
-Usage:    shutdown [-akrhHPfnc[-t secs] time [warning message] +[root@centos8 ~]shutdown --help 
-                  -a:      use /etc/shutdown.allow +shutdown [OPTIONS...] [TIME] [WALL...]
-                  -k:      don't really shutdown, only warn. +
-                  -r:      reboot after shutdown. +
-                  -h:      halt after shutdown. +
-                  -P:      halt action is to turn off power. +
-                  -H:      halt action is to just halt. +
-                  -f:      do a 'fast' reboot (skip fsck). +
-                  -F:      Force fsck on reboot. +
-                  -n:      do not go through "init" but go down real fast. +
-                  -c:      cancel a running shutdown. +
-                  -t secs: delay between warning and kill signal. +
-                  ** the "time" argument is mandatory! (try "now") ** +
-</code>+
  
-Parmi les options les plus importantes, on note :+Shut down the system.
  
-^ Option ^ Description ^ +     --help      Show this help 
--h | Arrêter le système | +  -H --halt      Halt the machine 
--r | Re-démarrer le système | +  -P --poweroff  Power-off the machine 
--c | Annuler l'opération shutdown en cours | +  -r --reboot    Reboot the machine 
--f | Re-démarrer rapidement sans vérifier les systèmes de fichiers | +  -h             Equivalent to --poweroff, overridden by --halt 
--F | Forcer la vérification des systèmes de fichiers lors du prochain démarrage |+  -k             Don't halt/power-off/reboot, just send warnings 
 +     --no-wall   Don't send wall message before halt/power-off/reboot 
 +  -c             Cancel a pending shutdown 
 +</code>
  
 L'option **heure** peut prendre plusieurs valeurs : L'option **heure** peut prendre plusieurs valeurs :
Ligne 2137: Ligne 2158:
 ^ Valeur ^ Description ^ ^ Valeur ^ Description ^
 | hh:mm | L'heure à laquelle l'opération aura lieu | | hh:mm | L'heure à laquelle l'opération aura lieu |
-| +m | Nombre de minutes avant que l'opération aura lieu | +| +m | Nombre de minutes avant que l'opération aura lieu. Si aucune valeur n'est spécifiée, la valeur par défaut est +1 
-| now | L'opération est immédiate |+| now | L'opération est immédiate. now est un alias de +0 |
  
 <WRAP center round important 60%> <WRAP center round important 60%>
-**Important** : Si l'opération est programmée pour dans moins de 5 minutes, les connexions supplémentaires sont interdites, y comprises les tentatives de connexion de root. Notez aussi que l'utilisation de la commande **shutdown** peut être accordée à d'autres utilisateurs de root en utilisant le fichier **/etc/shutdown.allow**.+**Important** : Si l'opération est programmée pour dans moins de 5 minutes, les connexions supplémentaires sont interdites, y comprises les tentatives de connexion de root. 
 </WRAP> </WRAP>
  
-Dans votre VM, ouvrez deux terminaux. Dans le premier passez en tant que root. Planifiez ensuite un redémarrage de la VM dans 30 minutes :+L'option **-t** est utilisée pour accorder un temps de grâce :
  
 <code> <code>
-[root@centos7 ~]# shutdown -r +30 +[root@centos8 ~]# date && shutdown -t 60 -k 
- +Mon Jun  7 18:58:26 EDT 2021 
-Broadcast message from trainee@centos.fenestros.loc +Shutdown scheduled for Mon 2021-06-07 18:59:26 EDT, use 'shutdown -c' to cancel.
- (/dev/pts/0) at 10:12 ... +
- +
-The system is going down for reboot in 30 minutes! +
-</code>  +
- +
-Dans le deuxième terminal est passez en tant que route. Annulez ensuite le shutdown : +
- +
-<code> +
-[trainee@centos7 ~]$ su - +
-Mot de passe  +
-[root@centos7 ~]# shutdown -c +
-</code> +
- +
-Retournez au premier terminal et constatez le message affiché : +
- +
-<code> +
-[root@centos7 ~]# shutdown -r +30 +
- +
-Broadcast message from trainee@centos.fenestros.loc +
- (/dev/pts/0) at 10:12 ... +
- +
-The system is going down for reboot in 30 minutes! +
- +
- +
-shutdown: Shutdown cancelled +
-[root@centos7 ~]#+
 </code> </code>
  
 ==== La Commande reboot==== ==== La Commande reboot====
  
-Cette commande redémarre le système. Quand le système fonctionne normalement, l'exécution de reboot appelle la commande **shutdown -r**.+Cette commande redémarre le système.
  
 ===Options de la commande=== ===Options de la commande===
Ligne 2187: Ligne 2182:
  
 <code> <code>
-[root@centos7 ~]# reboot --help +[root@centos8 ~]# reboot --help 
-Usage: reboot [OPTION]...+reboot [OPTIONS...] [ARG] 
 Reboot the system. Reboot the system.
  
-Options: +     --help      Show this help 
-  -n, --no-sync               don't sync before reboot or halt +     --halt      Halt the machine 
-  -f--force                 force reboot or halt, don't call shutdown(8) +  ---poweroff  Switch off the machine 
-  -p, --poweroff              switch off the power when called as halt +     --reboot    Reboot the machine 
-  -w--wtmp-only             don'actually reboot or halt, just write wtmp +  -f --force     Force immediate halt/power-off/reboot 
-                                record +  -w --wtmp-only Don'halt/power-off/reboot, just write wtmp record 
-  -q, --quiet                 reduce output to errors only +  ---no-wtmp   Don't write wtmp record 
-  -v, --verbose               increase output to include informational messages +     --no-wall   Don't send wall message before halt/power-off/reboot
-      --help                  display this help and exit +
-      --version               output version information and exit +
- +
-This command is intended to instruct the kernel to reboot or halt the system; +
-when run without the -f option, or when in a system runlevel other than 0 or 6, +
-it will actually execute /sbin/shutdown. +
- +
- +
-Report bugs to <upstart-devel@lists.ubuntu.com>+
 </code> </code>
  
 ==== La Commande halt==== ==== La Commande halt====
  
-Cette commande arrête le système. Quand le système fonctionne normalement, l'exécution de halt appelle la commande **shutdown -h**.+Cette commande arrête le système.
  
 ===Options de la commande=== ===Options de la commande===
Ligne 2219: Ligne 2206:
  
 <code> <code>
-[root@centos7 ~]# halt --help +[root@centos8 ~]# halt --help 
-Usage: halt [OPTION]...+halt [OPTIONS...
 Halt the system. Halt the system.
  
-Options: +     --help      Show this help 
-  -n, --no-sync               don't sync before reboot or halt +     --halt      Halt the machine 
-  -f--force                 force reboot or halt, don't call shutdown(8) +  ---poweroff  Switch off the machine 
-  -p, --poweroff              switch off the power when called as halt +     --reboot    Reboot the machine 
-  -w--wtmp-only             don'actually reboot or halt, just write wtmp +  -f --force     Force immediate halt/power-off/reboot 
-                                record +  -w --wtmp-only Don'halt/power-off/reboot, just write wtmp record 
-  -q, --quiet                 reduce output to errors only +  ---no-wtmp   Don't write wtmp record 
-  -v, --verbose               increase output to include informational messages +     --no-wall   Don't send wall message before halt/power-off/reboot
-      --help                  display this help and exit +
-      --version               output version information and exit +
- +
-This command is intended to instruct the kernel to reboot or halt the system; +
-when run without the -f option, or when in a system runlevel other than 0 or 6, +
-it will actually execute /sbin/shutdown. +
- +
- +
-Report bugs to <upstart-devel@lists.ubuntu.com>+
 </code> </code>
  
 ==== La Commande poweroff==== ==== La Commande poweroff====
  
-Cette commande arrête le système et coupe l'alimentation électrique. Elle est l'équivalente de la commande **halt -p**. Quand le système fonctionne normalement, l'exécution de **poweroff** appelle la commande **shutdown -hP**.+Cette commande arrête le système et coupe l'alimentation électrique. 
  
 ===Options de la commande=== ===Options de la commande===
Ligne 2251: Ligne 2230:
  
 <code> <code>
-[root@centos7 ~]# poweroff --help +[root@centos8 ~]# poweroff --help 
-Usage: poweroff [OPTION]...+poweroff [OPTIONS...
 Power off the system. Power off the system.
  
-Options: +     --help      Show this help 
-  -n, --no-sync               don't sync before reboot or halt +     --halt      Halt the machine 
-  -f--force                 force reboot or halt, don't call shutdown(8) +  ---poweroff  Switch off the machine 
-  -p, --poweroff              switch off the power when called as halt +     --reboot    Reboot the machine 
-  -w--wtmp-only             don'actually reboot or halt, just write wtmp +  -f --force     Force immediate halt/power-off/reboot 
-                                record +  -w --wtmp-only Don'halt/power-off/reboot, just write wtmp record 
-  -q, --quiet                 reduce output to errors only +  ---no-wtmp   Don't write wtmp record 
-  -v, --verbose               increase output to include informational messages +     --no-wall   Don't send wall message before halt/power-off/reboot
-      --help                  display this help and exit +
-      --version               output version information and exit +
- +
-This command is intended to instruct the kernel to reboot or halt the system; +
-when run without the -f option, or when in a system runlevel other than 0 or 6, +
-it will actually execute /sbin/shutdown. +
- +
- +
-Report bugs to <upstart-devel@lists.ubuntu.com>+
 </code> </code>
  
 ----- -----
-<html> +Copyright © 2024 Hugh Norris.
-<div align="center"> +
-Copyright © 2021 Hugh Norris. +
-</html>+
Menu