Exercices récapitulatifs
Table des matières
- Quiz de validation
- Exercice 1 : Gestion des utilisateurs
- Exercice 2 : Permissions
- Mini-projet : Configurer un utilisateur applicatif
- Prochaines étapes
1 - Quiz de validation
Questions
Q1. Quelle commande ajoute un utilisateur à un groupe sans le retirer des autres groupes ?
Voir la réponse
usermod -aG groupe utilisateur
Le -a (append) est crucial ! Sans lui, l'utilisateur est retiré de tous ses groupes existants.
Q2. Quelles sont les permissions en octal pour rwxr-xr-- ?
Voir la réponse
754
- rwx = 4+2+1 = 7
- r-x = 4+0+1 = 5
- r-- = 4+0+0 = 4
Q3. Comment éditer le fichier sudoers de manière sécurisée ?
Voir la réponse
visudo ou sudo visudo
Visudo vérifie la syntaxe avant de sauvegarder, évitant de casser sudo.
Q4. Quelle est la différence entre apt remove et apt purge ?
Voir la réponse
apt remove: supprime le package mais conserve les fichiers de configurationapt purge: supprime le package ET les fichiers de configuration
Q5. Comment tuer un processus qui ne répond pas ?
Voir la réponse
kill -9 PID ou kill -SIGKILL PID
Le signal 9 (SIGKILL) force l'arrêt immédiat.
Q6. Comment activer un service au démarrage ET le lancer immédiatement ?
Voir la réponse
sudo systemctl enable --now service
Q7. Comment rendre une variable d'environnement permanente pour un utilisateur ?
Voir la réponse
Ajouter export VARIABLE=valeur dans ~/.bashrc puis exécuter source ~/.bashrc
Q8. Comment rediriger stdout ET stderr vers le même fichier ?
Voir la réponse
commande > fichier.txt 2>&1 ou commande &> fichier.txt
Q9. À quoi sert la commande tee ?
Voir la réponse
tee divise la sortie : elle écrit dans un fichier ET affiche à l'écran en même temps.
Q10. Comment voir les logs d'un service systemd en temps réel ?
Voir la réponse
journalctl -u service -f
Résultats
| Score | Niveau |
|---|---|
| 10/10 | Excellent ! Vous êtes prêt pour Linux 3 |
| 7-9/10 | Bien ! Révisez les points manqués |
| 4-6/10 | Moyen. Relisez les chapitres concernés |
| 0-3/10 | Reprenez le cours Linux 2 |
🔝 Retour à la table des matières
2 - Exercice 1 : Gestion des utilisateurs
Objectif
Créer et configurer un utilisateur avec des groupes spécifiques.
Instructions
# 1. Créez un groupe "developers"
sudo groupadd developers
# 2. Créez un utilisateur "devuser" avec :
# - Home directory
# - Shell bash
# - Membre du groupe developers
sudo useradd -m -s /bin/bash -G developers devuser
# 3. Définissez un mot de passe
sudo passwd devuser
# 4. Vérifiez la création
id devuser
# Devrait afficher : uid=...(devuser) gid=...(devuser) groups=...(devuser),...(developers)
# 5. Ajoutez devuser au groupe sudo
sudo usermod -aG sudo devuser
# 6. Vérifiez les groupes
groups devuser
# 7. Créez un fichier de test dans son home
sudo -u devuser touch /home/devuser/test.txt
# 8. Vérifiez le propriétaire
ls -la /home/devuser/test.txt
Vérification
# L'utilisateur devuser doit :
# - Exister (id devuser ne doit pas afficher d'erreur)
# - Avoir /home/devuser comme home
# - Avoir /bin/bash comme shell
# - Être membre de developers et sudo
Nettoyage
sudo userdel -r devuser
sudo groupdel developers
🔝 Retour à la table des matières
3 - Exercice 2 : Permissions
Objectif
Configurer des permissions pour un dossier de projet partagé.
Instructions
# 1. Créez un groupe projet
sudo groupadd projet
# 2. Créez un dossier partagé
sudo mkdir /srv/projet
# 3. Changez le propriétaire et groupe
sudo chown root:projet /srv/projet
# 4. Configurez les permissions :
# - Propriétaire : rwx
# - Groupe : rwx
# - Autres : r-x
# + SGID pour que les nouveaux fichiers héritent du groupe
sudo chmod 2775 /srv/projet
# 5. Vérifiez
ls -ld /srv/projet
# drwxrwsr-x 2 root projet ... /srv/projet
# 6. Ajoutez votre utilisateur au groupe
sudo usermod -aG projet $USER
# 7. Reconnectez-vous (ou newgrp projet)
newgrp projet
# 8. Créez un fichier dans le dossier
touch /srv/projet/test.txt
# 9. Vérifiez que le fichier appartient au groupe projet
ls -la /srv/projet/test.txt
Questions
- Pourquoi utilise-t-on SGID (2) ?
- Que se passe-t-il si on oublie le SGID ?
- Pourquoi les autres ont r-x et pas rwx ?
Réponses
- SGID fait hériter le groupe du répertoire aux nouveaux fichiers
- Sans SGID, les fichiers créés auraient le groupe principal de l'utilisateur
- r-x permet de lire et accéder au dossier sans pouvoir modifier/créer
Nettoyage
sudo rm -rf /srv/projet
sudo groupdel projet
🔝 Retour à la table des matières
4 - Mini-projet : Configurer un utilisateur applicatif
Contexte
Vous devez configurer un serveur pour déployer une application Node.js. Vous allez créer un utilisateur dédié avec les bonnes permissions.
Objectifs
- Créer un utilisateur
deploysans accès interactif - Créer la structure de dossiers
- Configurer les permissions
- Créer un service systemd simple
Instructions
# === ÉTAPE 1 : Créer l'utilisateur ===
# Créer l'utilisateur système (sans home standard, sans login)
sudo useradd -r -s /usr/sbin/nologin -d /app deploy
# Créer manuellement le répertoire
sudo mkdir -p /app
sudo chown deploy:deploy /app
# Vérifier
id deploy
ls -ld /app
# === ÉTAPE 2 : Structure de dossiers ===
sudo -u deploy mkdir -p /app/{current,releases,shared}
sudo -u deploy mkdir -p /app/shared/{logs,config}
# Vérifier la structure
ls -la /app
ls -la /app/shared
# === ÉTAPE 3 : Créer une application factice ===
# Créer un script simple
cat << 'EOF' | sudo tee /app/current/app.sh
#!/bin/bash
while true; do
echo "[$(date)] Application running..."
sleep 10
done
EOF
# Rendre exécutable
sudo chmod 755 /app/current/app.sh
sudo chown deploy:deploy /app/current/app.sh
# === ÉTAPE 4 : Créer le service systemd ===
cat << 'EOF' | sudo tee /etc/systemd/system/myapp.service
[Unit]
Description=My Application
After=network.target
[Service]
Type=simple
User=deploy
Group=deploy
WorkingDirectory=/app/current
ExecStart=/bin/bash /app/current/app.sh
Restart=always
RestartSec=5
StandardOutput=append:/app/shared/logs/app.log
StandardError=append:/app/shared/logs/app.log
[Install]
WantedBy=multi-user.target
EOF
# Recharger systemd
sudo systemctl daemon-reload
# === ÉTAPE 5 : Tester ===
# Démarrer le service
sudo systemctl start myapp
# Vérifier l'état
sudo systemctl status myapp
# Voir les logs
tail -f /app/shared/logs/app.log
# Arrêter pour nettoyage (Ctrl+C d'abord)
sudo systemctl stop myapp
Vérifications finales
| Élément | Commande de vérification | Résultat attendu |
|---|---|---|
| Utilisateur | id deploy | Existe, pas de shell |
| Dossier /app | ls -ld /app | Propriété de deploy |
| Service | systemctl status myapp | Active (running) |
| Logs | ls /app/shared/logs/ | app.log existe |
Nettoyage
sudo systemctl stop myapp
sudo systemctl disable myapp
sudo rm /etc/systemd/system/myapp.service
sudo systemctl daemon-reload
sudo rm -rf /app
sudo userdel deploy
🔝 Retour à la table des matières
5 - Prochaines étapes
Félicitations !
Vous avez terminé le cours Linux 2 - Administration de Base !
Ce que vous avez appris
Compétences acquises
| Compétence | Maîtrise |
|---|---|
| Gérer les utilisateurs et groupes | ✅ |
| Configurer les permissions | ✅ |
| Utiliser sudo de manière sécurisée | ✅ |
| Installer et gérer des packages | ✅ |
| Surveiller les processus | ✅ |
| Gérer les services systemd | ✅ |
| Configurer les variables d'environnement | ✅ |
| Utiliser redirections et pipes | ✅ |
Prochaine étape : Linux 3
Dans le cours Linux 3 - Système et Réseau, vous apprendrez :
- Système de fichiers avancé
- Gestion du stockage (LVM, montage)
- Configuration réseau
- SSH et connexions sécurisées
- Pare-feu (UFW, iptables)
- Tâches planifiées (cron)
- Archivage et compression
- Recherche avancée (find, sed, awk)
Conseils pour progresser
- Pratiquez sur des VMs : Cassez, réparez, recommencez
- Administrez un vrai serveur : VPS pas cher pour expérimenter
- Automatisez : Écrivez des scripts pour les tâches répétitives
- Lisez les logs : Habituez-vous à journalctl
- Documentez : Notez ce que vous apprenez
Récapitulatif des commandes
Utilisateurs et groupes
| Commande | Usage |
|---|---|
useradd -m -s /bin/bash user | Créer un utilisateur |
usermod -aG groupe user | Ajouter à un groupe |
passwd user | Définir le mot de passe |
id user | Informations utilisateur |
Permissions
| Commande | Usage |
|---|---|
chmod 755 fichier | Modifier les permissions |
chown user:group fichier | Changer le propriétaire |
ls -la | Voir les permissions |
Packages
| Commande | Usage |
|---|---|
apt update && apt upgrade | Mettre à jour |
apt install package | Installer |
apt remove package | Supprimer |
Processus et services
| Commande | Usage |
|---|---|
ps aux | Lister les processus |
kill -9 PID | Forcer l'arrêt |
systemctl start/stop/status | Gérer les services |
journalctl -u service -f | Logs en temps réel |
Redirections
| Syntaxe | Usage |
|---|---|
> | Rediriger stdout (écrase) |
>> | Rediriger stdout (ajoute) |
2> | Rediriger stderr |
| | Pipe |
tee | Diviser la sortie |