Introduction
Ce laboratoire guidé final rassemble plusieurs compétences de préparation à la certification RHCSA. Vous recevrez toujours des conseils sur les commandes, mais les étapes se rapprochent davantage du flux de travail de validation d'un administrateur : inspecter le système, configurer l'état requis et prouver le résultat final à l'aide d'outils standard.
Dans ce laboratoire, vous allez créer une identité d'opérateur local, préparer un stockage persistant, déployer un petit service à partir de ce stockage, ajouter des politiques SELinux et pare-feu, puis effectuer une vérification finale de préparation.
Inspecter le système préparé
Dans cette étape, vous allez inspecter les ressources préparées pour le flux de travail final. Commencez par confirmer le périphérique de bloc, l'état du service et le mode SELinux.
La configuration initiale conserve de manière permanente l'accès SSH et l'accès au terminal de navigateur LabEx sur 3002/tcp dans la zone public. Conservez ces règles d'administration lorsque vous modifiez la politique de pare-feu de l'application.
Accédez au répertoire du projet.
cd /home/labex/project
Affichez le chemin de la partition préparée. Les commandes ultérieures réutiliseront ce chemin afin que vous n'ayez pas à deviner quel périphérique de bloc appartient au laboratoire.
cat /home/labex/project/rhcsa-final-part
Inspectez le périphérique de bloc préparé. Il ne possède pas encore le système de fichiers final, il s'agit donc de votre base de référence avant le formatage.
lsblk "$(cat /home/labex/project/rhcsa-final-part)"
Vérifiez que le service final n'a pas encore été configuré. La commande || true permet au laboratoire de continuer même si l'unité est absente à ce stade.
systemctl status rhcsa-final-web.service --no-pager || true
Confirmez que SELinux est en mode enforcing avant de commencer. Le mode enforcing est important car les étiquettes SELinux ultérieures ne sont pas seulement informatives ; elles déterminent si la politique est appliquée.
getenforce
Créer l'identité de l'opérateur et le répertoire partagé
Dans cette étape, vous allez créer un groupe local, un utilisateur local et un répertoire partagé avec le bit setgid. Les commandes sont conçues pour être sûres si vous devez les relancer.
Créez le groupe s'il n'existe pas. getent group vérifie d'abord le service de noms local, et la partie || crée le groupe uniquement lorsque la recherche échoue.
getent group rhcsaops || sudo groupadd rhcsaops
Créez l'utilisateur finaladmin s'il n'existe pas.
id finaladmin >/dev/null 2>&1 || sudo useradd -m -s /bin/bash -G rhcsaops finaladmin
Assurez-vous que l'utilisateur est membre du groupe d'opérateurs. Les options -aG ajoutent l'appartenance au groupe au lieu de remplacer les groupes supplémentaires existants de l'utilisateur.
sudo usermod -aG rhcsaops finaladmin
id finaladmin
Créez un répertoire partagé pour les notes des opérateurs. Le mode 2770 donne au groupe un accès complet et définit le bit setgid, de sorte que les nouveaux fichiers héritent du groupe rhcsaops.
sudo mkdir -p /srv/rhcsa-final/team
sudo chown root:rhcsaops /srv/rhcsa-final/team
sudo chmod 2770 /srv/rhcsa-final/team
Écrivez un fichier de test en tant que finaladmin.
sudo -u finaladmin bash -c 'echo final validation access > /srv/rhcsa-final/team/finaladmin.txt'
Inspectez le répertoire et le fichier.
sudo stat -c '%a %U:%G %n' /srv/rhcsa-final/team /srv/rhcsa-final/team/finaladmin.txt
Préparer le stockage persistant
Dans cette étape, vous allez créer un système de fichiers sur la partition préparée et le monter de manière persistante par UUID. Cela reflète le modèle de validation de stockage utilisé dans les tâches de type RHCSA.
Stockez le chemin de la partition préparée dans une variable shell.
part="$(cat /home/labex/project/rhcsa-final-part)"
Créez un système de fichiers ext4 avec une étiquette reconnaissable. Cette opération est destructive pour la partition d'entraînement préparée, elle n'intervient donc qu'après avoir confirmé le chemin du périphérique.
sudo mkfs.ext4 -F -L RHCSA_FINAL "$part"
Créez le point de montage.
sudo mkdir -p /mnt/rhcsa-final
Capturez l'UUID du système de fichiers et remplacez toute ancienne ligne fstab pour ce point de montage. Les UUID sont des identifiants stables pour les montages persistants, et la suppression des anciennes lignes évite les entrées fstab en double.
uuid="$(sudo blkid -s UUID -o value "$part")"
sudo sed -i '/\/mnt\/rhcsa-final/d' /etc/fstab
Ajoutez l'entrée de montage persistant.
echo "UUID=$uuid /mnt/rhcsa-final ext4 defaults 0 0" | sudo tee -a /etc/fstab
Montez à partir de fstab et inspectez le résultat. mount -a prouve que la ligne fstab fonctionne, tandis que findmnt et df confirment la cible de montage et la capacité disponible.
sudo mount -a
findmnt /mnt/rhcsa-final
df -h /mnt/rhcsa-final
Déployer et activer le service final
Dans cette étape, vous allez placer du contenu web sur le système de fichiers monté et créer un service systemd qui le sert localement sur le port 18083.
Créez le répertoire de contenu web.
sudo mkdir -p /mnt/rhcsa-final/www
Créez le fichier de contenu.
echo "RHCSA final validation service" | sudo tee /mnt/rhcsa-final/www/index.html >/dev/null
Définissez les permissions afin que l'utilisateur de service labex puisse lire le contenu sans le rendre accessible en écriture à tout le monde. Le service n'a besoin que d'un accès en lecture de groupe et de traversée de répertoire, pas d'un accès large en écriture.
sudo chown -R root:labex /mnt/rhcsa-final/www
sudo chmod 750 /mnt/rhcsa-final/www
sudo chmod 640 /mnt/rhcsa-final/www/index.html
Créez l'unité de service. Le service s'exécute à partir du répertoire de contenu monté et se lie à localhost sur le port 18083, ce qui facilite la validation locale avec curl.
sudo tee /etc/systemd/system/rhcsa-final-web.service >/dev/null <<'EOF'
[Unit]
Description=RHCSA final validation web service
After=network.target
[Service]
Type=simple
User=labex
Group=labex
WorkingDirectory=/mnt/rhcsa-final/www
ExecStart=/usr/bin/python3 -m http.server 18083 --bind 127.0.0.1
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
Sécurisez le fichier d'unité, rechargez systemd et activez le service. Les fichiers d'unité sous /etc/systemd/system doivent appartenir à root, et daemon-reload permet à systemd de lire la nouvelle unité avant que vous ne l'activiez et ne la redémarriez.
sudo chown root:root /etc/systemd/system/rhcsa-final-web.service
sudo chmod 644 /etc/systemd/system/rhcsa-final-web.service
sudo systemctl daemon-reload
sudo systemctl enable rhcsa-final-web.service
sudo systemctl restart rhcsa-final-web.service
sleep 1
Testez le service.
systemctl is-active rhcsa-final-web.service
curl -s http://127.0.0.1:18083/
Ajouter la politique SELinux et pare-feu
Dans cette étape, vous allez compléter la politique du service. Ajoutez des étiquettes SELinux persistantes pour le contenu et le port, puis ouvrez le port avec firewalld.
Ajoutez ou mettez à jour la règle de contexte de fichier persistante. Le modèle || rend cette opération sûre à relancer : elle ajoute la règle si elle est manquante et la modifie si le chemin possède déjà une règle personnalisée.
sudo semanage fcontext -a -t httpd_sys_content_t '/mnt/rhcsa-final/www(/.*)?' || sudo semanage fcontext -m -t httpd_sys_content_t '/mnt/rhcsa-final/www(/.*)?'
Appliquez la règle de contexte. restorecon modifie les étiquettes de fichiers actuelles pour qu'elles correspondent à la règle SELinux persistante que vous venez de créer.
sudo restorecon -Rv /mnt/rhcsa-final/www
Ajoutez ou mettez à jour l'étiquette de port HTTP SELinux. Le modèle d'ajout ou de modification gère à la fois un système propre et une réexécution où l'étiquette de port existe déjà.
sudo semanage port -a -t http_port_t -p tcp 18083 || sudo semanage port -m -t http_port_t -p tcp 18083
Démarrez firewalld et ouvrez le port du service de manière permanente.
sudo systemctl enable --now firewalld
sudo firewall-cmd --permanent --add-port=18083/tcp
sudo firewall-cmd --reload
Inspectez les étiquettes et l'état du pare-feu. Ces vérifications relient le travail de politique à l'état observable : étiquette de fichier, type de port HTTP autorisé et port de pare-feu ouvert.
ls -Z /mnt/rhcsa-final/www/index.html
sudo semanage port -l | grep '^http_port_t'
sudo firewall-cmd --list-ports
Exécuter la vérification finale de préparation
Dans cette étape, vous allez valider l'état complet du système avec les mêmes outils que ceux utilisés tout au long du cours. Il ne s'agit pas d'un rapport écrit, mais d'une vérification opérationnelle.
Vérifiez l'identité locale et l'appartenance au groupe.
id finaladmin
getent group rhcsaops
Vérifiez le stockage persistant. Vous vérifiez à la fois le montage actif et l'entrée fstab enregistrée, car l'un ou l'autre seul ne représente que la moitié de l'exigence de stockage.
findmnt /mnt/rhcsa-final
grep /mnt/rhcsa-final /etc/fstab
Vérifiez le service.
systemctl is-enabled rhcsa-final-web.service
systemctl is-active rhcsa-final-web.service
curl -s http://127.0.0.1:18083/
Vérifiez SELinux et firewalld. L'état final doit montrer SELinux en mode enforcing, l'étiquette de contenu HTTP sur le fichier de service et le port 18083/tcp ouvert dans firewalld.
getenforce
ls -Z /mnt/rhcsa-final/www/index.html
sudo firewall-cmd --list-ports
Résumé
Vous avez terminé un flux de travail guidé de préparation finale en configurant une identité d'opérateur, un répertoire partagé avec setgid, un stockage persistant, un service systemd, des étiquettes de fichier et de port SELinux, l'exposition via firewalld et une validation finale basée sur des commandes.



