Correction sur les exercices sur les propriétés et permissions sur Linux
Exercice 1 :
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 ?
- r: read (lecture : afficher le contenu ou pouvoir voir la ressource)
- w: write (écriture : modifier une ressource)
- x: execute (exécuter : traverser un répertoire ou exécuter un fichier (script))
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.
Exemple de commande :
chmod u=rwx,g=r,o= fichier1.txt
Modifier les permissions d'un fichier en notation octale :
- Pour fichier2.sh, vous souhaitez donner au propriétaire lecture/écriture/exécution (7), au groupe lecture/exécution (5), et aux autres lecture (4).
- 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 ?
Exemple de commande :
- 555 : lecture + exécution pour tous (propriétaire, groupe, autres)
- 644 : lecture + écriture pour le propriétaire, lecture pour le groupe et autres
- 755 : lecture + écriture + exécution pour le propriétaire, lecture + exécution pour le groupe et autres.
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 (même s'il est vide) avec ./fichier2.sh pour vérifier le bon fonctionnement.
Remarque : Si fichier2.sh n'a pas le droit d'exécution, ajoutez-le avec chmod +x fichier2.sh.
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.
Exemple de commande :
chmod u=rwx,g=,o=rx dossier1
Sans droit d'exécution sur un dossier, il est impossible de le traverser.
Changer le propriétaire et le groupe d'un fichier :
- Supposez que vous avez les droits nécessaires (ex. en étant root), 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 ?
Exemple de commande :
chown root:www-data fichier1.txt
Vous ne pouvez pas modifier la propriété d'une ressource qui ne vous appartient pas. C'est la base de la sécurité !
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 ?
Exemple de commande :
mkdir dossier2
touch dossier2/fichier3.log
chmod -R 705 dossier2
7. L'option -R signifie "récursive".
Cela applique les droits et propriétés (en fonction de l'usage de chown ou chmod) à travers toutes les ressources à l'intérieur.
Points à vérifier / Questions de révision
Différence entre notation symbolique et octale :
- La notation symbolique (ex: u=rwx,g=rx,o=r) décrit les droits en mentionnant explicitement l'utilisateur (u), le groupe (g) et les autres (o), ainsi que les droits (r, w, x).
- La notation octale (ex: 754) utilise des chiffres (0 à 7) qui représentent la combinaison binaire des droits (r=4, w=2, x=1) pour chaque catégorie (propriétaire, groupe, autres).
Différence du droit d'exécution sur un fichier et un répertoire :
- Sur un fichier, le droit d'exécution signifie que vous pouvez lancer ce fichier comme un programme ou un script.
- Sur un répertoire, le droit d'exécution permet de "pénétrer" dans le répertoire (cd) et de parcourir sa structure interne, sans nécessairement pouvoir en lire la liste des fichiers s'il n'y a pas le droit de lecture.
Effet des droits 777 sur un fichier ou un répertoire :
- Les permissions 777 signifient que tout le monde (propriétaire, groupe, autres) a tous les droits (lecture, écriture, exécution).
- Cela représente un important risque de sécurité car n'importe quel utilisateur peut modifier ou supprimer le contenu.
Changer uniquement le groupe d'un fichier sans modifier le propriétaire :
Utilisez la commande chgrp <nouveau_groupe> <fichier> ou chown :<nouveau_groupe> <fichier> pour ne changer que le groupe.
Pourquoi un utilisateur non-privilégié ne peut pas changer le propriétaire d'un fichier :
Seul l'administrateur (root) a le droit de changer le propriétaire d'un fichier. Un utilisateur non-privilégié ne peut pas transférer la propriété, même s'il possède déjà le fichier, afin d'éviter des abus de droits et des contournements de sécurité.
Exercice 2
Lien entre les permissions et l'UMASK :
- Qu'est-ce que l'UMASK, et comment influence-t-il les permissions par défaut ?
L'UMASK est une valeur qui définit quelles permissions sont retirées par défaut lors de la création de nouveaux fichiers ou répertoires. Par exemple, avec une UMASK de 022, les fichiers nouvellement créés n'auront pas les permissions d'écriture pour le groupe et les autres.
- Comment afficher et modifier la valeur de l'UMASK ?
Pour afficher l'UMASK, utilisez la commande umask sans argument. Pour la modifier temporairement, exécutez umask suivi de la nouvelle valeur (ex: umask 027). Pour un changement permanent, ajoutez cette commande dans le fichier de configuration du shell (ex: ~/.bashrc).
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é ?
Le SUID (Set UID) est un bit spécial principalement appliqué aux fichiers exécutables. Il permet à un utilisateur lançant le programme d'hériter des privilèges du propriétaire du fichier (souvent root). Un exemple est la commande /usr/bin/passwd.
- Qu'est-ce que le SGID et pourquoi est-il utile sur un répertoire partagé ?
Le SGID (Set GID) appliqué à un répertoire fait en sorte que tous les fichiers créés à l'intérieur héritent automatiquement du groupe du répertoire, ce qui facilite le travail collaboratif dans un dossier partagé.
- Qu'est-ce que le Sticky Bit sur un répertoire comme /tmp ?
Le Sticky Bit sur un répertoire permet à chaque utilisateur de créer et de modifier ses propres fichiers, mais empêche la suppression ou la modification des fichiers par d'autres utilisateurs, renforçant ainsi la sécurité et l'intégrité du répertoire.
Combinaisons pratiques de droits :
- Pourquoi est-il déconseillé de donner systématiquement les permissions 777 ?
Donner 777 ouvre complètement l'accès à tous les utilisateurs (lecture, écriture, exécution), ce qui représente un risque de sécurité majeur, car n'importe qui peut modifier, supprimer ou exécuter le fichier ou répertoire.
- Comment garantir que seul le propriétaire puisse modifier un fichier, mais que tous puissent le lire ?
Attribuez au propriétaire les droits de lecture et écriture (r w), au groupe et aux autres uniquement la lecture (r). Par exemple, chmod 644 fichier (propriétaire : rw, groupe : r, autres : r).
Héritage des permissions dans les répertoires :
- Les droits sur un répertoire influencent-ils automatiquement les droits sur les nouveaux fichiers ?
Par défaut, non. Les fichiers nouvellement créés héritent de l'UMASK et non directement des permissions du répertoire parent. Cependant, l'utilisation du SGID sur un répertoire peut influencer le groupe des nouveaux fichiers.
- Comment le SGID influe-t-il sur l'héritage du groupe des nouveaux fichiers ?
Avec le SGID sur un répertoire, tous les nouveaux fichiers créés dans ce répertoire héritent automatiquement du groupe du répertoire, ce qui facilite la gestion des droits dans des environnements collaboratifs.
Gestion de groupes pour simplifier la maintenance des droits :
- Pourquoi est-il plus efficace de gérer les droits via des groupes ?
Gérer les droits via des groupes évite d'ajuster individuellement les permissions pour chaque utilisateur. On assigne des utilisateurs à un groupe, puis on gère les permissions au niveau du groupe, ce qui est plus simple et scalable.
- Comment créer un groupe, y ajouter un utilisateur et vérifier les permissions ?
Utilisez groupadd nom_du_groupe pour créer un groupe, usermod -aG nom_du_groupe utilisateur pour y ajouter un utilisateur, et groups utilisateur pour vérifier que l'utilisateur appartient bien au groupe. Ensuite, vérifiez les permissions sur un fichier avec ls -l.
Sécurité et audit :
- Comment identifier rapidement les fichiers à permissions excessives ou SUID/SGID inappropriés ?
Un administrateur peut utiliser des commandes comme find / -perm /o+w pour trouver les fichiers trop permissifs ou find / -perm /4000 pour les SUID, afin de les lister et de les examiner.
- Quels outils pour auditer les permissions ?
Des outils tels que find, ls -lR, getfacl (pour ACL) ou encore des scripts de vérification personnalisés peuvent aider à auditer efficacement les permissions sur un ensemble de fichiers.
Permissions et liens (symboliques / physiques) :
- Comment fonctionnent les permissions avec les liens symboliques ?
Les liens symboliques ne possèdent pas réellement de permissions indépendantes : c'est la cible du lien qui détermine les droits effectifs. Les permissions affichées sur un lien symbolique sont généralement lrwxrwxrwx, mais ce sont celles de la cible qui comptent pour l'accès.
- Différence entre lien symbolique et lien physique en matière de permissions :
Un lien physique pointe directement vers les données du fichier, partageant ainsi les mêmes permissions et le même inode que le fichier d'origine. Un lien symbolique est simplement un raccourci pointant vers le fichier d'origine, et ses permissions n'influencent pas l'accès aux données du fichier cible.
ACL (Access Control Lists) et permissions classiques :
- Qu'est-ce qu'une ACL et en quoi diffère-t-elle du système classique ?
Une ACL permet de définir des permissions plus granulaires que le triplet propriétaire/groupe/autres. On peut attribuer des droits spécifiques à des utilisateurs ou groupes individuels, en complément des permissions classiques.
- Dans quel cas utiliser les ACLs ?
Les ACLs sont utiles lorsqu'il faut gérer des accès complexes pour plusieurs utilisateurs et groupes sans créer une arborescence complexe de groupes ou dupliquer des fichiers.
- Comment afficher et modifier les ACLs ?
Utilisez getfacl <fichier> pour afficher les ACLs, et setfacl -m u:utilisateur:rwx <fichier> pour les modifier. Ainsi, on peut adapter finement les droits sans altérer le schéma global de permissions.