Comment comprendre chmod, chown et les permissions Linux

Objectif : Les permissions Linux décident qui peut lire, modifier ou exécuter un fichier. Le trio utilisateur, groupe, autres reçoit des droits r, w et x. chmod modifie ces droits ; chown change le propriétaire et/ou le groupe. Le mauvais réflexe est de résoudre chaque ‘Permission denied’ avec chmod 777 : cela ouvre l’accès à tout le monde et masque la vraie cause.
Étapes rapides
- Étape 1. ls -l fichier pour lire permissions et propriétaire.
- Étape 2. chmod u+x script.sh pour ajouter l’exécution au propriétaire.
- Étape 3. chmod g-w fichier pour retirer l’écriture au groupe.
- Étape 4. chmod 640 fichier correspond à rw- pour owner, r-- pour group, --- pour others.
- Étape 5. sudo chown utilisateur:groupe fichier seulement quand la propriété doit réellement changer.
- Étape 6. Pour un serveur web, adaptez propriétaire/groupe au service plutôt que d’utiliser 777.
Résultat attendu : à la fin de ce tutoriel, vous saurez appliquer la méthode, vérifier qu’elle fonctionne et revenir en arrière ou diagnostiquer les erreurs courantes lorsque c’est possible.
Ce qu’il faut préparer
- Dossier de test dans votre home.
- Savoir afficher ls -l.
- Ne pas tester sur /etc, /usr ou des données de production.

Tutoriel détaillé
Lire rwx
Une chaîne comme -rw-r----- se lit par blocs : le premier caractère décrit le type, puis rw- pour le propriétaire, r-- pour le groupe et --- pour les autres. Sur un dossier, x signifie notamment pouvoir le traverser. Une permission de lecture sur un dossier ne se comporte donc pas exactement comme la lecture d’un fichier. Utilisez namei -l pour diagnostiquer chaque composant d’un chemin si nécessaire.
chmod symbolique
La syntaxe u, g, o et a permet de cibler user, group, others ou all. + ajoute, - retire et = fixe. Exemple chmod u+x script.sh. Cette écriture est souvent plus lisible et moins risquée que l’octal pour une modification ponctuelle. Après chaque changement, relancez ls -l et vérifiez seulement le droit voulu.

chmod octal
Les valeurs 4, 2 et 1 représentent lecture, écriture et exécution. 6 = 4+2 donc rw-, 5 = r-x, 7 = rwx. chmod 640 donne rw-r-----. N’utilisez pas 777 comme recette universelle : un fichier de secret devrait au contraire être très restreint, et un répertoire partagé demande un groupe et des politiques adaptées.
chown et groupes
chown user:group fichier change propriétaire et groupe, opération souvent réservée à root. Pour donner accès à plusieurs utilisateurs, un groupe Linux est généralement plus propre que changer constamment le propriétaire. Ajoutez les membres au bon groupe et définissez les permissions de groupe. Après modification des groupes, une nouvelle session peut être nécessaire pour que l’utilisateur obtienne ses nouveaux groupes.
Récursif et bits spéciaux
chmod -R ou chown -R agit sur tout un arbre et peut casser un système en quelques secondes. Sur des répertoires partagés, le bit setgid peut conserver le groupe sur les nouveaux fichiers. Sticky bit est utilisé sur des dossiers comme /tmp pour limiter les suppressions par d’autres utilisateurs. Étudiez ces mécanismes plutôt que d’ouvrir tous les droits.
Lire une permission : type, propriétaire, groupe, autres
Une ligne comme -rw-r----- se lit par blocs : le premier caractère indique le type, puis viennent trois permissions pour le propriétaire, trois pour le groupe et trois pour les autres. r signifie lecture, w écriture, x exécution. Pour un dossier, x signifie aussi la possibilité de le traverser ; retirer ce bit peut rendre le contenu inaccessible même si les fichiers sont lisibles.
Laboratoire sans sudo
À exécuter dans Terminal, sans droits root. Ce bloc crée un fichier dans votre dossier personnel et modifie uniquement ses permissions.
mkdir -p ~/permissions-lab
printf 'test\n' > ~/permissions-lab/exemple.txt
ls -l ~/permissions-lab/exemple.txt
chmod 640 ~/permissions-lab/exemple.txt
ls -l ~/permissions-lab/exemple.txt
Après chmod 640, le propriétaire a lecture/écriture, le groupe lecture et les autres aucun droit. Pour revenir à une permission courante de fichier utilisateur, vous pouvez utiliser chmod 644 ~/permissions-lab/exemple.txt, après avoir confirmé que ce niveau convient à votre contexte.
Notation symbolique : souvent plus lisible
Au lieu de calculer un nombre, vous pouvez exprimer l’intention :
chmod u+x script.sh
chmod g-w document.txt
chmod o-r fichier-prive.txt
Ces exemples ajoutent l’exécution au propriétaire, retirent l’écriture au groupe puis retirent la lecture aux autres. Utilisez-les uniquement sur des fichiers de test ou dont vous comprenez les besoins. ls -l avant et après constitue la méthode de vérification.
chown : changer le propriétaire n’est pas une réparation universelle
chown nécessite souvent sudo lorsqu’on change la propriété vers un autre utilisateur. N’utilisez pas un chown -R massif sur /usr, /etc, votre préfixe de gestionnaire de paquets ou tout le dossier personnel pour « régler les permissions ». Les logiciels s’attendent à des propriétaires précis ; une modification récursive peut casser la sécurité et les mises à jour.
Exemple ciblé de propriété
Dans un dossier que vous possédez et pour un besoin explicite, vérifiez d’abord :
stat ~/permissions-lab/exemple.txt
id
Ces commandes sont en lecture seule. Si un service nécessite un propriétaire particulier, suivez sa documentation et appliquez le changement au chemin minimal. Notez l’ancien UID/GID avant l’opération afin de pouvoir restaurer la propriété.
Permissions de dossiers : le piège du bit x
| Permission dossier | Effet |
|---|---|
| r | Lister les noms d’entrées |
| w | Créer/supprimer des entrées avec conditions |
| x | Traverser/accéder aux entrées connues |
Un chmod 644 sur un dossier n’a donc pas le même sens que sur un fichier : sans x, le dossier devient difficilement utilisable. Pour cette raison, n’appliquez pas récursivement un même mode numérique à des arbres mélangeant fichiers et dossiers.
Umask : agir sur les nouveaux fichiers
Si votre problème concerne les permissions de fichiers nouvellement créés, examinez l’umask plutôt que de lancer régulièrement des chmod récursifs. Modifiez-la seulement après avoir compris les besoins du service ou du shell, car une umask trop permissive peut exposer des données.
Checklist avant chmod/chown
- Chemin vérifié avec
realpathoupwd. - Permission/propriétaire actuel noté avec
ls -loustat. - Besoin précis défini : lecture, écriture, exécution, propriétaire.
- Pas de
-Rsans inventaire de l’arborescence. - Retour arrière chiffré ou symbolique préparé avant modification.
Cas pratique : serveur web ne peut pas lire un fichier
Ne commencez pas avec chmod 777. Identifiez l’utilisateur du service, le propriétaire du fichier et les permissions de chaque répertoire parent. Pour traverser un dossier, le bit x sur le répertoire est nécessaire ; le fichier peut être lisible mais inaccessible si un parent bloque le passage.
Inspecter le chemin
Sans sudo, lorsque vous avez les droits de lecture :
namei -l /CHEMIN/VERS/FICHIER
ls -l /CHEMIN/VERS/FICHIER
namei -l affiche les composants du chemin et leurs permissions. Remplacez le placeholder. Ces commandes ne changent rien. Si namei n’est pas installé sur votre distribution, utilisez ls -ld sur les dossiers parents.
Permissions numériques : comprendre avant d’utiliser
4 signifie lecture, 2 écriture, 1 exécution ; les valeurs se combinent pour propriétaire, groupe et autres. 640 donne lecture/écriture au propriétaire, lecture au groupe, aucun droit aux autres. Pour un répertoire, l’exécution signifie traverser, donc copier mécaniquement les mêmes chiffres fichier/dossier est souvent incorrect.
chown récursif : risque de casser un système
Une commande récursive lancée sur le mauvais chemin peut changer des milliers de propriétaires. N’utilisez pas chown -R ou chmod -R sur des répertoires système pour corriger un problème isolé. Prévisualisez d’abord les fichiers concernés et ciblez précisément.
Groupes plutôt que « tout le monde »
Pour partager un dossier entre quelques utilisateurs, un groupe Unix dédié est souvent plus propre que des permissions ouvertes à tous. Ajoutez les utilisateurs nécessaires, définissez le groupe du dossier et testez avec un compte secondaire avant d’appliquer à un grand arbre.
Retour arrière
Les permissions précédentes ne sont pas mémorisées automatiquement. Avant une modification complexe, enregistrez la sortie de stat/ls -l ou utilisez une sauvegarde. Pour un fichier unique, notez propriétaire, groupe et mode avant changement.
Checklist permissions
- Utilisateur/service qui a besoin d’accès identifié.
- Chaque parent du chemin inspecté.
- Pas de 777 comme solution générique.
- Récursion évitée ou strictement ciblée.
- Permissions initiales notées avant modification.
ACL : quand chmod ne suffit pas à expliquer les droits
Un système peut utiliser des ACL qui accordent des droits supplémentaires au-delà des bits Unix classiques. Si ls -l montre un signe + ou que le comportement semble incohérent, consultez getfacl si disponible avant de changer les modes.
setgid sur un dossier partagé
Pour un dossier d’équipe, le bit setgid sur le répertoire peut faire hériter le groupe aux nouveaux fichiers. C’est souvent plus propre que des chown répétés, mais testez avec un dossier de laboratoire avant de l’appliquer à des données existantes.
umask
La umask influence les permissions des nouveaux fichiers ; elle ne modifie pas rétroactivement les anciens. Si chaque nouveau fichier arrive avec de « mauvaises » permissions, corriger la umask de l’utilisateur ou du service peut être plus pertinent qu’un chmod récurrent.
Validation finale : testez les permissions avec le compte ou le service réellement concerné, pas uniquement avec votre compte administrateur. Une configuration peut sembler correcte pour root tout en restant inaccessible à l’utilisateur applicatif.
Documentez la raison de chaque exception de permissions afin qu’une future maintenance ne réouvre pas les droits sans contexte.
Comment vérifier que cela fonctionne
- ls -l montre exactement le propriétaire, groupe et droits attendus.
- L’utilisateur cible peut faire l’action nécessaire et les autres non autorisés ne le peuvent pas.
- Aucun chmod récursif large n’a été appliqué à des répertoires système.
Problèmes fréquents et solutions
- Permission denied malgré chmod : vérifiez les droits de tous les dossiers parents et les ACL.
- Propriétaire correct mais service ne lit pas : vérifiez sous quel utilisateur/groupe le service fonctionne.
- chmod n’a aucun effet attendu sur un volume partagé : le système de fichiers ou montage peut avoir ses propres règles.
Précautions et sécurité
- Ne lancez jamais chmod -R 777 sur /, /etc, votre home entier ou un serveur web.
- Faites une sauvegarde/état des permissions avant une modification récursive importante.
Questions fréquentes
Que signifie 755 ?
rwx pour le propriétaire, r-x pour groupe et autres.
chmod change-t-il le propriétaire ?
Non, c’est chown qui change la propriété.
Pourquoi un dossier a besoin de x ?
Le bit x sur un dossier permet notamment de traverser le répertoire pour accéder aux entrées autorisées.
À retenir
La méthode : ls -l fichier pour lire permissions et propriétaire. chmod u+x script.sh pour ajouter l’exécution au propriétaire. chmod g-w fichier pour retirer l’écriture au groupe.
Le principe important : procédez par étapes, contrôlez le résultat après chaque changement et protégez toujours vos données, comptes ou accès avant une action irréversible.
Sources officielles et références
- Ubuntu Manpages – chmod
- Ubuntu Manpages – chown
- GNU Coreutils – File permissions
- Linux man-pages – chmod
- Linux man-pages – chown
Crédits des images
- Photo 1 — Pexels · Licence Pexels.
- Photo 2 — Pexels · Licence Pexels.
- Photo 3 — Pexels · Licence Pexels.
Commentaires