Linux 101 : Le guide accessible pour maîtriser les permissions

February 15, 2025

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 :

Structure des permissions

Les permissions sont attribuées à trois catégories d’utilisateurs :

Notation numérique : 4, 2, 1

Chaque permission est représentée par une valeur :

Additionnez ces valeurs pour chaque catégorie. Par exemple, pour un fichier avec les permissions 644 :

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.

On utilisera donc :

chmod 754 mon_fichier

Vous pouvez utiliser également comme notation non chiffré avec les modificateur suivant :

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 :

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 :

3. Calcul et application des permissions

Exemples de calcul

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

Risques du Setgid

Risques généraux

5. Bonnes Pratiques pour la gestion des permissions

  1. Principe du Moindre Privilège :
    Attribuez uniquement les droits nécessaires à chaque utilisateur ou groupe.
  2. Audit Régulier :
    Utilisez des outils comme find et ls -l pour vérifier les permissions sur les fichiers sensibles.
  3. Documentation et Formation :
    Tenez une documentation à jour et formez vos équipes sur les meilleures pratiques.
  4. Outils de Sécurité :
    Intégrez des solutions telles que SELinux ou AppArmor pour renforcer les contrôles d’accès.
  5. 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