Exercices sur les propriétés et permissions sur Linux
Objectifs de l'exercice 1
Apprendre à :
- Comprendre et afficher les permissions d'un fichier ou d'un répertoire (lecture, écriture, exécution).
- Modifier les permissions sur un fichier ou un répertoire en utilisant différentes notations (symbolique et octale).
- Changer le propriétaire et/ou le groupe d'un fichier ou d'un répertoire.
Contexte
On considère que vous disposez d'un répertoire de travail
(par exemple, /home/stagiaire/exercice_chmod_chown).
Dans ce répertoire, vous allez créer différents fichiers et répertoires, modifier leurs permissions et leur appartenance, puis vérifier le résultat.
Préparation de l'environnement
1. Création du répertoire de travail (si non déjà existant) :
mkdir -p /home/stagiaire/exercice_chmod_chown
cd /home/stagiaire/exercice_chmod_chown
Création des fichiers et répertoires de test :
touch fichier1.txt
echo "echo \"fonctionne !\"" > fichier2.sh
mkdir dossier1
mkdir dossier2
2. À ce stade, vous avez :
- Deux fichiers : fichier1.txt et fichier2.sh
- Deux répertoires : dossier1 et dossier2
Étapes de l'exercice
1. Afficher les permissions actuelles :
Utilisez ls -shla pour afficher les permissions de tous les fichiers et répertoires.
Question : Que signifient les trois groupes de caractères (rwx) dans la colonne des permissions ?
2. Modifier les permissions d'un fichier en notation symbolique :
- Pour fichier1.txt, donnez tous les droits au propriétaire (u), et retirez tous les droits pour les autres (o). Le groupe n'aura que le droit de lecture (g=r).
- Affichez le résultat avec ls -l et expliquez la signification des permissions obtenues.
3. Modifier les permissions d'un fichier en notation octale :
- Pour fichier2.sh, vous souhaitez donner au propriétaire lecture/écriture/exécution, au groupe lecture/exécution, et aux autres lecture.
- Utilisez la notation octale pour y parvenir, puis vérifiez le résultat.
- Qu'est-ce que 555, 644 et 755 représentent en termes de permissions ?
4. Rendre un script exécutable :
- fichier2.sh est censé être un script. Assurez-vous qu'il dispose bien du droit d'exécution pour le propriétaire.
- Exécutez fichier2.sh avec ./fichier2.sh pour vérifier le bon fonctionnement.
5. Modifier les permissions d'un répertoire :
- Sur dossier1, donnez au propriétaire tous les droits, au groupe aucun droit, et aux autres seulement le droit de lecture et exécution (nécessaires pour "descendre" dans le répertoire, mais pas pour modifier son contenu).
- Vérifiez vos changements avec ls -ld dossier1.
Question : Pourquoi un répertoire a-t-il besoin du droit d'exécution (x) pour qu'on puisse y entrer ?
6. Changer le propriétaire et le groupe d'un fichier :
- Passez en root (su -), changez le propriétaire de fichier1.txt en root et le groupe en www-data.
- Affichez à nouveau les permissions et vérifiez le propriétaire et le groupe du fichier.
- Que se passe-t-il si vous essayez de changer le propriétaire ou le groupe sans les privilèges d'administrateur ?
7. Appliquer récursivement des permissions sur un répertoire :
- Sur dossier2, appliquez des permissions qui octroient lecture/écriture/exécution au propriétaire, rien pour le groupe, et lecture/exécution pour les autres.
- Créez à l'intérieur de dossier2 un fichier fichier3.log puis appliquez la même règle de permissions de façon récursive (afin que dossier2 et tout son contenu respectent ces mêmes permissions).
- Pourquoi est-il pratique d'utiliser l'option -R de chmod ?
- Cette option existe-t-elle dans la commande chown ?
Questions de révision
- Décrivez la différence entre la notation symbolique (u=rwx,g=rx,o=r) et la notation octale (754).
- Expliquez la différence entre un droit d'exécution sur un fichier et sur un répertoire.
- Que se passe-t-il si vous donnez les droits 777 à un fichier ou à un répertoire ?
- Comment changer uniquement le groupe d'un fichier sans modifier le propriétaire ?
- Pourquoi un utilisateur non-privilégié ne peut-il pas changer le propriétaire d'un fichier qu'il possède déjà ?
Objectifs de l'exercice 2
Apprendre à :
- Comprendre et afficher les permissions spéciales
- Apprendre les bonnes pratiques d'application des permissions et propriétés.
- Comprendre l'objectif d'une ACL
Étapes de l'exercice
Lien entre les permissions et l'UMASK :
- Qu'est-ce que l'UMASK, et comment influence-t-il les permissions par défaut des fichiers et répertoires créés ?
- Comment afficher et modifier la valeur de l'UMASK de l'utilisateur courant ?
Permissions spéciales (SUID, SGID, Sticky Bit) :
- Qu'est-ce que le SUID et sur quel type de fichier est-il généralement appliqué ? Donnez un exemple concret.
- Qu'est-ce que le SGID et pourquoi est-il utile sur un répertoire partagé entre plusieurs utilisateurs ?
- Qu'est-ce que le Sticky Bit sur un répertoire (comme /tmp) et quelle est son utilité en termes de sécurité et de gestion des fichiers ?
Combinaisons pratiques de droits :
- Pourquoi est-il déconseillé de donner systématiquement les permissions 777 à un fichier ou un répertoire ?
- Comment garantir que seul le propriétaire d'un fichier puisse le modifier, mais que tous les utilisateurs puissent le lire ?
Héritage des permissions dans les répertoires :
- Les droits octroyés sur un répertoire influencent-ils automatiquement les droits sur les nouveaux fichiers créés en son sein ?
- En utilisant SGID sur un répertoire, comment les fichiers créés par différents utilisateurs héritent-ils du groupe ?
Gestion de groupes pour simplifier la maintenance des droits :
- Pourquoi est-il souvent plus efficace de gérer les droits via des groupes plutôt que de définir individuellement les droits sur chaque fichier/utilisateur ?
- Comment créer un nouveau groupe, y ajouter un utilisateur et vérifier que cet utilisateur a bien les permissions du groupe sur un fichier donné ?
Sécurité et audit :
- Comment un administrateur peut-il rapidement identifier les fichiers ayant des permissions trop larges ou des bits spéciaux SUID/SGID inappropriés sur un système Linux ?
- Quels outils ou commandes permettent d'auditer et de lister efficacement les permissions sur un ensemble de fichiers ou de répertoires ?
Permissions et liens symboliques / liens physiques :
- Comment les permissions fonctionnent-elles avec les liens symboliques ? Est-ce le lien lui-même ou la cible qui détermine les permissions finales sur le contenu ?
- Quelle est la différence de comportement des permissions entre un lien symbolique et un lien physique ?
Interaction entre ACL (Access Control Lists) et permissions classiques :
- Qu'est-ce qu'une ACL et en quoi diffère-t-elle du système de permissions classique sous Linux ?
- Dans quel cas l'utilisation d'ACLs est-elle préférable aux permissions standard ?
- Comment afficher et modifier les ACLs sur un fichier ou un répertoire ?
Corrections
Correction des exercices sur les propriétés et permissions sur Linux