Aller au contenu principal

Exercices récapitulatifs


Table des matières

  1. Quiz de validation
  2. Exercice 1 : Gestion des utilisateurs
  3. Exercice 2 : Permissions
  4. Mini-projet : Configurer un utilisateur applicatif
  5. 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 configuration
  • apt 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

ScoreNiveau
10/10Excellent ! Vous êtes prêt pour Linux 3
7-9/10Bien ! Révisez les points manqués
4-6/10Moyen. Relisez les chapitres concernés
0-3/10Reprenez 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

  1. Pourquoi utilise-t-on SGID (2) ?
  2. Que se passe-t-il si on oublie le SGID ?
  3. Pourquoi les autres ont r-x et pas rwx ?
Réponses
  1. SGID fait hériter le groupe du répertoire aux nouveaux fichiers
  2. Sans SGID, les fichiers créés auraient le groupe principal de l'utilisateur
  3. 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

  1. Créer un utilisateur deploy sans accès interactif
  2. Créer la structure de dossiers
  3. Configurer les permissions
  4. 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émentCommande de vérificationRésultat attendu
Utilisateurid deployExiste, pas de shell
Dossier /appls -ld /appPropriété de deploy
Servicesystemctl status myappActive (running)
Logsls /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étenceMaî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

  1. Pratiquez sur des VMs : Cassez, réparez, recommencez
  2. Administrez un vrai serveur : VPS pas cher pour expérimenter
  3. Automatisez : Écrivez des scripts pour les tâches répétitives
  4. Lisez les logs : Habituez-vous à journalctl
  5. Documentez : Notez ce que vous apprenez

Récapitulatif des commandes

Utilisateurs et groupes

CommandeUsage
useradd -m -s /bin/bash userCréer un utilisateur
usermod -aG groupe userAjouter à un groupe
passwd userDéfinir le mot de passe
id userInformations utilisateur

Permissions

CommandeUsage
chmod 755 fichierModifier les permissions
chown user:group fichierChanger le propriétaire
ls -laVoir les permissions

Packages

CommandeUsage
apt update && apt upgradeMettre à jour
apt install packageInstaller
apt remove packageSupprimer

Processus et services

CommandeUsage
ps auxLister les processus
kill -9 PIDForcer l'arrêt
systemctl start/stop/statusGérer les services
journalctl -u service -fLogs en temps réel

Redirections

SyntaxeUsage
>Rediriger stdout (écrase)
>>Rediriger stdout (ajoute)
2>Rediriger stderr
|Pipe
teeDiviser la sortie

🔝 Retour à la table des matières


← Chapitre précédent | Retour à la table des matières →