Lab 3.5 - Gestion des Permissions
Objectifs
À la fin de ce lab, vous serez capable de:
- Comprendre l'importance des permissions dans un système Linux
- Créer des utilisateurs et configurer des fichiers partagés
- Appliquer des permissions adaptées avec
chmodetchown - Utiliser la notation symbolique de
chmod(u, g, o, a) - Vérifier et tester les permissions
- Comprendre les différences entre
useraddetadduser
Prérequis
- Ubuntu 24.04 installé et fonctionnel
- Accès root ou sudo
- Terminal ouvert
Rappel sur la Gestion des Permissions
La gestion des permissions est un aspect essentiel de l'administration des systèmes Linux. Elle permet de contrôler qui peut accéder, modifier ou exécuter des fichiers et des répertoires. Une mauvaise configuration des permissions peut entraîner des failles de sécurité majeures, compromettant ainsi la confidentialité, l'intégrité et la disponibilité des données.
Dans cette section, nous allons explorer les différentes étapes nécessaires pour créer des utilisateurs, configurer des fichiers et des répertoires partagés, et appliquer des permissions adaptées pour garantir un accès contrôlé. Nous verrons également comment vérifier ces permissions pour nous assurer qu'elles sont correctement appliquées.
Les exercices présentés permettront de comprendre comment les commandes chown, chmod, et su peuvent être utilisées pour gérer efficacement les accès, ainsi que les risques potentiels associés à une mauvaise configuration.
Exercice 1: Configuration Initiale des Permissions
Étape 1: Connexion en tant que Superutilisateur
# Sur Ubuntu 24.04, utilisez sudo au lieu de su
sudo su
# Ou utilisez directement sudo pour chaque commande
Étape 2: Création des Utilisateurs
# Sur Ubuntu 24.04, utilisez adduser (plus convivial) ou useradd
sudo adduser albert
sudo adduser bernard
sudo adduser claude
sudo adduser danielle
# Si adduser n'est pas disponible, utilisez useradd avec -m pour créer le home
# sudo useradd -m albert
# sudo passwd albert # Définir le mot de passe
Note: Sur Ubuntu 24.04, adduser est préféré car il est interactif et configure automatiquement le home directory et d'autres paramètres.
Étape 3: Création du Dossier et des Fichiers
# Créer le dossier shared_data et les sous-dossiers/fichiers nécessaires
sudo mkdir -p /home/shared_data
sudo mkdir -p /home/shared_data/dossier1
sudo touch /home/shared_data/file1.txt
sudo touch /home/shared_data/file2.txt
sudo touch /home/shared_data/dossier1/script1.sh
sudo touch /home/shared_data/dossier1/script2.sh
# Ajouter du contenu aux scripts pour les tests
echo '#!/bin/bash
echo "Script 1 exécuté"' | sudo tee /home/shared_data/dossier1/script1.sh
echo '#!/bin/bash
echo "Script 2 exécuté"' | sudo tee /home/shared_data/dossier1/script2.sh
Étape 4: Attribution des Propriétaires et des Permissions
# Configuration initiale des permissions et propriétaires
# Albert - propriétaire de file1.txt avec permissions 644 (rw-r--r--)
sudo chown albert:albert /home/shared_data/file1.txt
sudo chmod 644 /home/shared_data/file1.txt
# Albert - propriétaire de file2.txt avec permissions 444 (r--r--r--) - lecture seule
sudo chown albert:albert /home/shared_data/file2.txt
sudo chmod 444 /home/shared_data/file2.txt
# Bernard - propriétaire de file2.txt avec permissions 664 (rw-rw-r--)
sudo chown bernard:bernard /home/shared_data/file2.txt
sudo chmod 664 /home/shared_data/file2.txt
# Bernard - propriétaire de script1.sh avec permissions 751 (rwxr-x--x)
sudo chown bernard:bernard /home/shared_data/dossier1/script1.sh
sudo chmod 751 /home/shared_data/dossier1/script1.sh
# Claude - propriétaire récursif de dossier1 avec permissions 766 (rwxrw-rw-)
sudo chown -R claude:claude /home/shared_data/dossier1
sudo chmod 766 /home/shared_data/dossier1
sudo chmod 666 /home/shared_data/dossier1/script1.sh
sudo chmod 666 /home/shared_data/dossier1/script2.sh
# Danielle - propriétaire récursif de shared_data avec permissions 777 (rwxrwxrwx) - TOUS LES DROITS
sudo chown -R danielle:danielle /home/shared_data
sudo chmod -R 777 /home/shared_data
Étape 5: Vérification des Répertoires Home des Utilisateurs
# Vérifiez que les répertoires des utilisateurs sont correctement configurés
ls -l /home
# Vérifiez les permissions du dossier shared_data
ls -lR /home/shared_data
Exercice 2: Tests de Permissions
Tableau de Tests de Permission
Voici un tableau qui décrit les actions que chaque utilisateur essaiera de réaliser et les résultats attendus basés sur les permissions définies :
| Action/Test | Utilisateur | Commande | Résultat Attendu |
|---|---|---|---|
Lire file1.txt | Albert | cat /home/shared_data/file1.txt | Succès |
Écrire dans file1.txt | Albert | echo "Test" >> /home/shared_data/file1.txt | Succès |
Lire file2.txt | Albert | cat /home/shared_data/file2.txt | Succès |
Écrire dans file2.txt | Albert | echo "Test" >> /home/shared_data/file2.txt | Échec (Permission refusée) |
Lire et écrire dans file2.txt | Bernard | echo "Bernard" >> /home/shared_data/file2.txt | Succès |
Exécuter script1.sh dans dossier1 | Bernard | bash /home/shared_data/dossier1/script1.sh | Succès |
Lire et écrire dans dossier1 | Claude | echo "Claude" >> /home/shared_data/dossier1/test.txt | Succès |
Exécuter script1.sh dans dossier1 | Claude | bash /home/shared_data/dossier1/script1.sh | Échec (Permission refusée) |
| Exécuter toutes les actions sur tous les fichiers/dossiers | Danielle | echo "Danielle" >> /home/shared_data/file1.txt | Succès (accès total) |
Réalisation des Tests
# Exécuter les tests pour vérifier les permissions
# Test 1: Albert lit file1.txt
sudo su albert -c 'cat /home/shared_data/file1.txt'
# Test 2: Albert écrit dans file1.txt
sudo su albert -c 'echo "Test Albert" >> /home/shared_data/file1.txt'
# Test 3: Albert lit file2.txt
sudo su albert -c 'cat /home/shared_data/file2.txt'
# Test 4: Albert essaie d'écrire dans file2.txt (devrait échouer)
sudo su albert -c 'echo "Test" >> /home/shared_data/file2.txt' || echo "Échec attendu: Permission refusée"
# Test 5: Bernard écrit dans file2.txt
sudo su bernard -c 'echo "Bernard" >> /home/shared_data/file2.txt'
# Test 6: Bernard exécute script1.sh
sudo su bernard -c 'bash /home/shared_data/dossier1/script1.sh'
# Test 7: Claude écrit dans dossier1
sudo su claude -c 'echo "Claude" >> /home/shared_data/dossier1/test.txt'
# Test 8: Claude essaie d'exécuter script1.sh (devrait échouer)
sudo su claude -c 'bash /home/shared_data/dossier1/script1.sh' || echo "Échec attendu: Permission refusée"
# Test 9: Danielle écrit dans file1.txt (accès total)
sudo su danielle -c 'echo "Danielle" >> /home/shared_data/file1.txt'
# Vérifier les résultats
cat /home/shared_data/file1.txt
cat /home/shared_data/file2.txt
ls -l /home/shared_data/dossier1/
Exercice 3: Notation Symbolique avec chmod
Dans cet exercice, vous allez explorer les permissions d'exécution et la manière de les accorder aux utilisateurs, aux groupes et à tous les autres en utilisant la notation symbolique de chmod.
Objectifs pédagogiques
- Comprendre la notation symbolique (
u,g,o,a) avecchmod - Ajouter dynamiquement la permission d'exécution sans modifier les autres droits
- Vérifier les effets avec
ls -l
Étape 1: Création d'un fichier script simple
# Créer un script de test
touch mon_script.sh
echo -e "#!/bin/bash\necho 'Script lancé !'" > mon_script.sh
# Vérifier le contenu
cat mon_script.sh
Étape 2: Affichage des permissions actuelles
ls -l mon_script.sh
Vérifiez que le fichier n'est pas exécutable (pas de x dans les permissions).
Étape 3: Ajout de la permission d'exécution pour l'utilisateur (propriétaire)
chmod u+x mon_script.sh
ls -l mon_script.sh
Ensuite, essayez d'exécuter le script avec :
./mon_script.sh
Étape 4: Ajout de la permission d'exécution pour le groupe
chmod g+x mon_script.sh
ls -l mon_script.sh
Étape 5: Ajout de la permission d'exécution pour tous les utilisateurs (a = all)
chmod a+x mon_script.sh
ls -l mon_script.sh
Étape 6: Suppression de toutes les permissions d'exécution
chmod a-x mon_script.sh
ls -l mon_script.sh
Résumé des commandes utilisées
| Commande | Action |
|---|---|
chmod u+x fichier | Ajoute la permission d'exécution pour l'utilisateur |
chmod g+x fichier | Ajoute la permission d'exécution pour le groupe |
chmod o+x fichier | Ajoute la permission d'exécution pour les autres utilisateurs |
chmod a+x fichier | Ajoute la permission d'exécution pour tout le monde |
chmod a-x fichier | Retire la permission d'exécution pour tout le monde |
Questions de réflexion
- Pourquoi utilise-t-on parfois
u+xau lieu dechmod 744? - Est-il possible d'ajouter une permission sans toucher aux autres ? Expliquez.
- Quelle est la différence entre
chmod a+xetchmod 755?
Annexe 1: useradd vs adduser
Création d'Utilisateurs avec useradd et adduser
La gestion des utilisateurs est une tâche fondamentale en administration système sous Linux. Deux commandes principales sont couramment utilisées pour créer des utilisateurs : useradd et adduser. Bien qu'elles aient des noms similaires, elles fonctionnent différemment.
useradd : La Commande Basique
La commande useradd est un utilitaire standard disponible sur toutes les distributions Linux. Elle permet de créer un nouvel utilisateur sans interaction humaine, ce qui la rend idéale pour les scripts d'automatisation. Toutefois, useradd ne demande pas de mot de passe ni d'informations supplémentaires par défaut.
# Créer un utilisateur sans mot de passe
sudo useradd -m albert
Après avoir créé l'utilisateur, vous devez définir un mot de passe manuellement avec la commande passwd :
# Ajouter un mot de passe pour l'utilisateur
sudo passwd albert
adduser : La Version Conviviale
Sur certaines distributions Linux, comme Debian et Ubuntu, adduser est une commande plus conviviale, qui est en réalité un script Perl enveloppant useradd. Cette commande guide l'administrateur à travers un processus interactif où il peut configurer plusieurs aspects du compte utilisateur, y compris le mot de passe, le nom complet, et d'autres informations facultatives.
# Créer un utilisateur avec un processus interactif
sudo adduser albert
Le système vous posera une série de questions :
- Mot de passe : Vous serez invité à entrer et confirmer le mot de passe de l'utilisateur.
- Nom complet : Vous pouvez fournir un nom complet pour l'utilisateur (optionnel).
- Numéro de chambre, Téléphone de travail, Téléphone personnel, Autres informations : Ces champs sont facultatifs et peuvent être laissés vides en appuyant sur
Entrée. - Confirmation : Vous devrez confirmer les informations avant que l'utilisateur ne soit créé.
Quand Utiliser useradd ou adduser ?
useradd: Utilisez cette commande lorsque vous avez besoin de créer des utilisateurs via un script ou lorsque vous ne souhaitez pas être invité à entrer des informations supplémentaires.adduser: Utilisez cette commande lorsque vous préférez un processus interactif et souhaitez configurer plusieurs détails du compte utilisateur en une seule étape.
Annexe 2: Gestion des Mots de Passe
Ajouter un mot de passe après création avec useradd
Lorsque vous utilisez la commande useradd, par défaut, elle ne demande pas de créer un mot de passe pour l'utilisateur. Pour ajouter un mot de passe immédiatement après avoir créé un utilisateur, vous pouvez utiliser la commande passwd.
# Créer les utilisateurs
sudo useradd -m pierre
sudo useradd -m marie
sudo useradd -m luc
sudo useradd -m sophie
# Ajouter un mot de passe pour chaque utilisateur
sudo passwd pierre
sudo passwd marie
sudo passwd luc
sudo passwd sophie
Avec chaque commande passwd, le système vous demandera d'entrer un mot de passe pour l'utilisateur spécifié. Assurez-vous que le mot de passe est conforme aux règles de sécurité du système (par exemple, longueur minimale, complexité, etc.).
Changer le mot de passe d'un utilisateur
Pour changer le mot de passe de l'utilisateur luc, vous pouvez utiliser la commande suivante :
sudo passwd luc
Après avoir exécuté cette commande, le système vous demandera de saisir un nouveau mot de passe pour l'utilisateur luc, puis de le confirmer en le saisissant une deuxième fois.
Questions de Réflexion
Objectif
Mieux comprendre la gestion des permissions dans Linux et l'impact de ces configurations sur la sécurité globale du système.
-
Expliquez l'importance des permissions dans un système Linux. Comment les permissions incorrectes peuvent-elles affecter la sécurité d'un système ?
- Cette question vise à vous amener à réfléchir sur les implications de la sécurité et la gestion des accès dans un environnement Linux.
-
Quelles différences y a-t-il entre les permissions de lecture, écriture et exécution ? Pourquoi est-il crucial de configurer correctement ces permissions dans un environnement multi-utilisateur ?
- Cette question est conçue pour vous aider à comprendre et à expliquer l'importance de chaque type de permission dans la sécurité et la fonctionnalité d'un système.
-
Quel est le rôle du fichier sudoers dans la gestion des permissions système ? Comment une mauvaise configuration de ce fichier peut-elle compromettre un système Linux ?
- Cette question vous encourage à explorer le rôle critique du fichier sudoers dans la gestion des privilèges d'administration et les risques associés à sa mauvaise gestion.
-
Pourquoi est-il important de limiter les permissions d'exécution sur certains fichiers ou scripts ? Donnez un exemple où cette limitation pourrait prévenir une faille de sécurité.
- Cette question vous permet de discuter de l'importance de la restriction des permissions d'exécution et de réfléchir à des scénarios où de telles restrictions sont essentielles à la sécurité.
-
Comment les commandes
chmodetchowninfluencent-elles la sécurité des fichiers et dossiers sur un serveur Linux ? Quelles sont les bonnes pratiques pour leur utilisation ?- Cette question vous demande de décrire comment ces commandes affectent la sécurité des fichiers et des dossiers et de réfléchir aux meilleures pratiques pour leur utilisation efficace et sûre.
-
Examinez un scénario où un utilisateur a accidentellement obtenu des permissions excessives sur des fichiers critiques. Quelles pourraient être les conséquences et comment ce problème pourrait-il être résolu ?
- Cette question vise à vous faire réfléchir aux impacts potentiels de la surattribution de permissions et aux mesures correctives possibles.
-
Qu'est-ce que le "sticky bit" et comment peut-il être utilisé pour améliorer la sécurité des répertoires partagés ?
- Cette question vous encourage à explorer le concept du sticky bit, son utilité et son application dans la sécurisation des environnements où plusieurs utilisateurs accèdent aux mêmes répertoires.
-
Discutez de l'importance de la séparation des droits d'utilisateur et d'administrateur sur un système Linux. Comment cela influence-t-il la sécurité générale du système ?
- Cette question vous permet de réfléchir à l'importance de la séparation des privilèges dans la prévention des abus de droits et des erreurs accidentelles.
Résumé
Dans ce lab, vous avez appris à:
- Créer des utilisateurs avec
adduseretuseradd - Configurer des fichiers et répertoires partagés
- Appliquer des permissions avec
chmod(notation numérique et symbolique) - Changer les propriétaires avec
chown - Tester et vérifier les permissions
- Comprendre l'importance de la sécurité des permissions
Prochaines Étapes
- Lab 3.2: Gestion des Permissions (concepts de base)
- Module 5: Utilisateurs et Permissions (approfondissement)
- Module 9: Sécurité Système (sécurisation avancée)
Lab créé le: Décembre 2024