Aller au contenu principal

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 chmod et chown
  • Utiliser la notation symbolique de chmod (u, g, o, a)
  • Vérifier et tester les permissions
  • Comprendre les différences entre useradd et adduser

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/TestUtilisateurCommandeRésultat Attendu
Lire file1.txtAlbertcat /home/shared_data/file1.txtSuccès
Écrire dans file1.txtAlbertecho "Test" >> /home/shared_data/file1.txtSuccès
Lire file2.txtAlbertcat /home/shared_data/file2.txtSuccès
Écrire dans file2.txtAlbertecho "Test" >> /home/shared_data/file2.txtÉchec (Permission refusée)
Lire et écrire dans file2.txtBernardecho "Bernard" >> /home/shared_data/file2.txtSuccès
Exécuter script1.sh dans dossier1Bernardbash /home/shared_data/dossier1/script1.shSuccès
Lire et écrire dans dossier1Claudeecho "Claude" >> /home/shared_data/dossier1/test.txtSuccès
Exécuter script1.sh dans dossier1Claudebash /home/shared_data/dossier1/script1.shÉchec (Permission refusée)
Exécuter toutes les actions sur tous les fichiers/dossiersDanielleecho "Danielle" >> /home/shared_data/file1.txtSuccè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) avec chmod
  • 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​

CommandeAction
chmod u+x fichierAjoute la permission d'exécution pour l'utilisateur
chmod g+x fichierAjoute la permission d'exécution pour le groupe
chmod o+x fichierAjoute la permission d'exécution pour les autres utilisateurs
chmod a+x fichierAjoute la permission d'exécution pour tout le monde
chmod a-x fichierRetire la permission d'exécution pour tout le monde

Questions de réflexion​

  1. Pourquoi utilise-t-on parfois u+x au lieu de chmod 744 ?
  2. Est-il possible d'ajouter une permission sans toucher aux autres ? Expliquez.
  3. Quelle est la différence entre chmod a+x et chmod 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 :

  1. Mot de passe : Vous serez invité à entrer et confirmer le mot de passe de l'utilisateur.
  2. Nom complet : Vous pouvez fournir un nom complet pour l'utilisateur (optionnel).
  3. 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.
  4. 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.

  1. 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.
  2. 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.
  3. 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.
  4. 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é.
  5. Comment les commandes chmod et chown influencent-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.
  6. 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.
  7. 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.
  8. 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 adduser et useradd
  • 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