Linux 101 : Le guide accessible pour maîtriser les permissions
Linux offre un contrôle très personnalisé et fin sur l’accès aux fichiers et aux répertoires grâce à un système de permissions reposant sur des valeurs numériques et des attributs spécifiques.
Ce guide vous expliquera comment fonctionnent les permissions classiques et avancées, comment les calculer avec les valeurs numériques, et vous alertera sur les risques associés à l’utilisation d’attributs comme le setuid et le setgid.
1. Comprendre les permissions classiques
Chaque fichier ou répertoire est associé à un ensemble de permissions qui définissent trois actions fondamentales :
- Read (r) : Lire le contenu d’un fichier ou lister un répertoire.
- Write (w) : Modifier ou supprimer un fichier, ou ajouter/supprimer dans un répertoire.
- Execute (x) : Exécuter un fichier ou accéder à un répertoire.
Structure des permissions
Les permissions sont attribuées à trois catégories d’utilisateurs :
- User (u) : Le propriétaire.
- Group (g) : Un groupe d’utilisateurs partageant des droits communs.
- Others (o) : Tous les autres utilisateurs.
Notation numérique : 4, 2, 1
Chaque permission est représentée par une valeur :
- Lecture = 4
- Écriture = 2
- Exécution = 1
Additionnez ces valeurs pour chaque catégorie. Par exemple, pour un fichier avec les permissions 644
:
- Propriétaire : 6 = 4 (lecture) + 2 (écriture)
- Groupe et autres : 4 = lecture seule
Cette méthode offre un moyen rapide de définir des droits précis et reste très utilisée en administration système. C’est la notation de base vous devez vous y habituer même si l’on retrouve souvent les meme valeurs
Affectation de permission
Pour changer les permissions d’un fichier nous utiliserons la commande chmod
Par exemple, si l’on souhaite que le proprietaire ait tous les droits, les même du groupe associé au fichier uniquement la lecture et l’execution et la lecture uniquement pour les autres on devra affecter la valeur 754.
- 7 (4+2+1) pour le propriétaire : lecture, écriture, exécution.
- 5 (4+0+1) pour le groupe : lecture et exécution.
- 4 pour les autres : lecture seule.
On utilisera donc :
chmod 754 mon_fichier
Vous pouvez utiliser également comme notation non chiffré avec les modificateur suivant :
- + ajout
- - retrait
- = affectation
Et en precisant si besoin si c’est pour les autres (o), groupe (g) ou proprietaire u. Personellement je vous conseille de rester sur la version chiffré.
Rappel : Pour changer le proprietaire ou le groupe d’un fichier on utilisera la commande chown.
2. Les permissions avancées
Linux propose aussi des attributs avancés pour répondre à des besoins spécifiques.
Sticky Bit
Le sticky bit, activé sur un répertoire, empêche les utilisateurs de supprimer ou renommer des fichiers qui ne leur appartiennent pas, même s’ils ont accès au répertoire.
Par exemple, /tmp
utilise le sticky bit pour éviter les suppressions accidentelles ou malveillantes.
chmod +t /tmp
Setuid et Setgid
Ces attributs modifient le comportement d’exécution, ne les utilisez pas a tout va car une mauvaise utilisation peut entrainer des failes de sécurité. Si vous avez besoin des droits root, sudo est votre ami dans la majeure partie des cas.
Setuid
Lorsqu’un exécutable possède le setuid, il s’exécute avec les privilèges du propriétaire, et non de l’utilisateur qui lance le programme.
chmod u+s /usr/bin/passwd
Risques :
Si un programme setuid comporte une vulnérabilité, un attaquant peut l’exploiter pour obtenir des privilèges élevés.
Conseils :
- Utilisez le setuid uniquement sur les exécutables indispensables.
- Mettez régulièrement à jour et auditez le code.
- Si le setuid est mis, il ne faut pas :
- Que des utilisateurs non proprietaires puissent modifier le script - sinon les modifications seront exécuté avec les droits du proprietaire
- Utiliser d’alias dans le script, la encore une modification au niveau de l’alias peut permettre de changer un comportement meme sans modifier le fichier
Setgid
Pour les fichiers, le setgid fonctionne comme le setuid mais pour le groupe. Pour les répertoires, il fait en sorte que tous les fichiers et sous-répertoires héritent du groupe du répertoire parent.
chmod g+s /var/www
Risques :
Le setgid sur un répertoire partagé peut faciliter l’accès à des fichiers sensibles si la gestion des groupes n’est pas rigoureuse.
Conseils :
- Limitez l’appartenance aux groupes sensibles.
- Revoyez régulièrement les droits et les membres des groupes.
3. Calcul et application des permissions
Exemples de calcul
-
Commande
chmod 755 fichier
:- Propriétaire : 7 = 4+2+1 (lecture, écriture, exécution)
- Groupe : 5 = 4+0+1 (lecture, exécution)
- Autres : 5 = 4+0+1 (lecture, exécution)
-
Commande
chmod 644 fichier
:- Propriétaire : 6 = 4+2 (lecture, écriture)
- Groupe et autres : 4 = lecture seule
Scénarios d’utilisation
Serveur web
Pour un site web, séparez les fichiers accessibles publiquement de ceux sensibles :
chmod 755 /var/www/html
chmod 640 /etc/nginx/nginx.conf
chown root:www-data /etc/nginx/nginx.conf
Répertoire partagé
Dans un répertoire où chacun peut déposer des fichiers sans risque de suppression par autrui :
chmod 1777 /srv/partage
Outils systèmes
Certains outils, comme /usr/bin/passwd
, utilisent le setuid pour permettre aux utilisateurs de changer leur mot de passe en toute sécurité. Ces applications doivent être surveillées de près pour éviter toute faille.
4. Risques et vulnérabilités
Risques du Setuid
- Escalade de Privilèges :
Un programme vulnérable avec setuid peut permettre à un attaquant d’obtenir des droits root. - Mesures de Protection :
- Limitez le nombre de programmes setuid.
- Auditez régulièrement ces exécutables.
- Appliquez les mises à jour de sécurité.
Risques du Setgid
- Propagation des Droits :
Les fichiers héritant du groupe d’un répertoire peuvent exposer des données sensibles. - Mesures de Protection :
- Contrôlez strictement l’appartenance aux groupes.
- Utilisez le principe du moindre privilège.
Risques généraux
- Permissions trop libres :
Évitez les permissions excessives (ex. 777) qui peuvent mener à des modifications ou suppressions non désirées. Typiquement si il y’a une faille coté application un attaquant pourrait s’en servir. - Utilisation incorrecte du Sticky Bit :
Assurez-vous que le sticky bit soit appliqué sur des répertoires où il apporte réellement une valeur ajoutée.
5. Bonnes Pratiques pour la gestion des permissions
- Principe du Moindre Privilège :
Attribuez uniquement les droits nécessaires à chaque utilisateur ou groupe. - Audit Régulier :
Utilisez des outils commefind
etls -l
pour vérifier les permissions sur les fichiers sensibles. - Documentation et Formation :
Tenez une documentation à jour et formez vos équipes sur les meilleures pratiques. - Outils de Sécurité :
Intégrez des solutions telles que SELinux ou AppArmor pour renforcer les contrôles d’accès. - Utilisation des ACL :
Pour des contrôles plus granulaires, envisagez d’utiliser les ACL (Access Control Lists).
6. Conclusion
Maîtriser les permissions sous Linux est indispensable pour sécuriser vos environnements. En comprenant la notation numérique (4, 2, 1) et en appliquant correctement les permissions classiques et avancées, vous réduisez significativement les risques d’escalade de privilèges et de mauvaises configurations.
En appliquant les bonnes pratiques et en surveillant régulièrement vos configurations, vous garantissez une meilleure protection des données et une stabilité accrue de vos systèmes. Testez toujours vos configurations dans un environnement de test avant de les déployer en production, et restez à jour avec les recommandations de sécurité de votre distribution Linux.
N’hésitez pas à laisser vos commentaires ou questions pour approfondir ce sujet !
comments powered by Disqus