Chmod calculator : maîtriser les permissions Unix et Linux
Le système de permissions Unix : propriétaire, groupe, autres
Le système de fichiers Unix repose sur un modèle de permissions à trois niveaux. Chaque fichier et répertoire est associé à un propriétaire (owner), un groupe (group) et une catégorie "autres" (others, tous les utilisateurs restants). Pour chaque niveau, trois droits peuvent être accordés ou refusés : lecture (r), écriture (w) et exécution (x).
Ce modèle, défini par la norme POSIX (IEEE Std 1003.1), est à la base de la sécurité de tous les systèmes Unix, Linux et macOS. La commande chmod (change mode) permet de modifier ces permissions, tandis que ls -la les affiche sous forme symbolique.
Valeur octale = lecture (4) + écriture (2) + exécution (1)
La notation octale expliquée
Chaque chiffre octal (0 à 7) encode les trois permissions d'un niveau en additionnant les valeurs : lecture = 4, écriture = 2, exécution = 1. Trois chiffres représentent les droits du propriétaire, du groupe et des autres, dans cet ordre.
Permissions courantes et leurs usages
Source : IEEE Std 1003.1, chmod(1)
Notation octale vs notation symbolique
Il existe deux façons de spécifier les permissions avec chmod. La notation octale définit les permissions de manière absolue : chmod 755 fichier fixe exactement rwxr-xr-x. La notation symbolique permet des modifications relatives : chmod +x fichier ajoute le droit d'exécution sans toucher aux autres permissions.
Notation octale (absolue)
chmod 755
Définit toutes les permissions d'un coup
Notation symbolique (relative)
chmod u+x
Ajoute ou retire un droit spécifique
Exemple illustré : sécuriser un déploiement web
Lors du déploiement d'un site web sur un serveur Linux, les permissions doivent être définies avec précision pour chaque type de fichier.
Le propriétaire peut tout faire, les autres lisent et traversent
find /var/www -type d -exec chmod 755 {} \; Le propriétaire lit et écrit, les autres lisent seulement
find /var/www -type f -exec chmod 644 {} \; Seul le propriétaire peut lire et écrire le .env
chmod 600 /var/www/.env chmod 600
Permission recommandée pour les clés SSH (~/.ssh/id_rsa) et les fichiers contenant des secrets
Jamais 777 en production
Permissions spéciales : setuid, setgid et sticky bit
Au-delà des 9 bits de permissions standard, trois bits spéciaux existent. Le setuid (4xxx) permet à un exécutable de s'exécuter avec les droits de son propriétaire plutôt que ceux de l'utilisateur qui le lance (exemple : /usr/bin/passwd). Le setgid (2xxx) fait la même chose pour le groupe. Le sticky bit (1xxx), appliqué à un répertoire, empêche les utilisateurs de supprimer les fichiers des autres (exemple : /tmp).
Pour un aperçu complet de votre système de fichiers, la commande stat affiche les permissions en octal et en symbolique. Pour convertir des données CSV exportées par vos scripts d'audit, utilisez notre convertisseur CSV vers JSON.
Bonnes pratiques de sécurité
Le principe du moindre privilège s'applique directement aux permissions de fichiers. Chaque fichier ne devrait avoir que les permissions strictement nécessaires à son fonctionnement. Les fichiers de configuration contenant des secrets (clés API, mots de passe de base de données) doivent être en 600 ou 400. Les répertoires web en 755, les fichiers statiques en 644. Pour vérifier l'intégrité de vos fichiers critiques, générez un hash SHA-256 avec notre générateur de hash.
Astuce umask
umask définit les permissions par défaut des nouveaux fichiers. Un umask de 022 (défaut courant) donne 755 aux répertoires et 644 aux fichiers. Pour un environnement plus restrictif, utilisez umask 077 (permissions 700 et 600).Erreurs fréquentes à éviter
- Appliquer chmod -R 755 à tout un répertoire. Les fichiers ordinaires n'ont généralement pas besoin du bit d'exécution. Distinguez les répertoires (755) des fichiers (644) avec
find ... -type detfind ... -type f. - Utiliser 777 pour "résoudre" un problème de permissions. C'est un contournement dangereux. Identifiez le vrai problème (propriétaire incorrect, groupe manquant) et corrigez-le avec
chownetchgrp. - Oublier les permissions du répertoire parent. Pour accéder à un fichier, l'utilisateur doit avoir le droit d'exécution (x) sur tous les répertoires du chemin. Un fichier 644 dans un répertoire 700 est inaccessible aux autres.
- Confondre le bit d'exécution sur fichier et répertoire. Sur un fichier, x signifie "exécutable". Sur un répertoire, x signifie "traversable" (pouvoir cd dedans et accéder au contenu).
- Ne pas vérifier le propriétaire et le groupe. Les permissions octales ne servent à rien si le fichier appartient au mauvais utilisateur. Vérifiez toujours avec
ls -laet corrigez avecchown user:group.
Sources et références
- IEEE Std 1003.1, chmod : spécification POSIX de la commande chmod.
- chmod(1) Linux man page : page de manuel Linux.
- MDN Web Docs, Permissions Policy : permissions dans le contexte web.
- OWASP File Upload Testing : bonnes pratiques de permissions pour les uploads.