Linux sans magie #5 — Les permissions Linux : comprendre enfin rwxr-xr-x
Comprendre les permissions Linux avec ls -l et chmod : propriétaire, groupe, autres, lecture, écriture et exécution, dans un lab simple et reproductible.
Vous savez maintenant vous déplacer dans Linux, créer des fichiers, les copier, les lire et les modifier.
Il reste pourtant un détail qui apparaît partout dès que l’on tape :
ls -l
On obtient des lignes qui commencent par quelque chose comme :
-rw-r--r--
ou :
drwxr-xr-x
Au premier regard, cela ressemble à un mot de passe particulièrement mal choisi.
En réalité, c’est une phrase très compacte.
Elle répond principalement à une question : qui a le droit de faire quoi avec ce fichier ?
Dans cet article, nous allons apprendre à lire ces permissions sans calcul compliqué, puis à les modifier progressivement avec chmod.
Nous resterons volontairement sur la notation symbolique — u, g, o, r, w, x — avant d’aborder les nombres comme 644 ou 755 dans un article dédié.
Objectif
À la fin de ce lab, vous saurez lire une permission comme :
-rw-r--r--
Vous comprendrez les trois populations concernées : u pour le propriétaire, g pour le groupe et o pour les autres utilisateurs.
Vous comprendrez aussi les trois permissions fondamentales : r pour lire, w pour écrire et x pour exécuter.
Vous saurez également ajouter ou retirer un droit avec chmod.
GNU Coreutils définit les modes symboliques sous la forme utilisateurs + opération + permissions, avec notamment u, g, o, puis +, - ou =.
Lab — Créer un terrain de jeu sans risque
Revenez dans votre répertoire personnel :
cd
Vérifiez :
pwd
Créez le lab :
mkdir linux-sans-magie-lab
Entrez dedans :
cd linux-sans-magie-lab
Puis créez un fichier :
touch rapport.txt
Vérifiez :
ls -l
Vous devriez obtenir une ligne ressemblant à :
-rw-r--r-- 1 alex alex 0 Sep 5 16:30 rapport.txt
Les noms, la date et certains détails varieront sur votre machine.
Ce qui nous intéresse aujourd’hui est surtout :
-rw-r--r--
Découper ce qui semblait illisible
Prenons :
-rw-r--r--
Le premier caractère est à part. Ici, - indique que nous regardons un fichier ordinaire.
Pour un répertoire, vous verriez généralement d, comme dans :
drwxr-xr-x
Pour l’instant, mettons ce premier caractère de côté.
Il reste neuf caractères :
rw-r--r--
On peut les découper en trois blocs :
rw- r-- r--
C’est déjà beaucoup plus lisible.
Les trois blocs : propriétaire, groupe, autres
Les permissions Linux traditionnelles distinguent trois catégories.
rw- r-- r--
│ │ │
│ │ └── autres
│ └──────── groupe
└────────────── propriétaire
Autrement dit : le propriétaire a rw-, le groupe a r-- et les autres ont r--.
Le propriétaire du fichier peut donc lire et écrire. Le groupe peut lire. Les autres peuvent lire.
Comprendre r, w et x
r — read
r signifie read, donc lire.
Sur un fichier texte, avoir r permet notamment d’en lire le contenu.
w — write
w signifie write, donc écrire.
Sur notre fichier, cette permission permet de modifier son contenu.
x — execute
x signifie execute.
Sur un fichier adapté, cette permission participe à la possibilité de l’exécuter comme programme ou script.
Nous consacrerons un article entier à ce cas.
Pour aujourd’hui, retenez simplement : r = lire, w = écrire, x = exécuter.
Et le tiret - ?
Dans un bloc comme rw-, le tiret signifie simplement que cette permission n’est pas accordée à cet emplacement.
rw- signifie donc : lecture oui, écriture oui, exécution non.
r-- signifie : lecture oui, écriture non, exécution non.
Identifier le propriétaire et le groupe
Revenons à :
ls -l rapport.txt
Vous pourriez voir :
-rw-r--r-- 1 alex alex 0 Sep 5 16:30 rapport.txt
Les deux noms au milieu correspondent notamment au propriétaire et au groupe associés au fichier.
Pour vérifier votre utilisateur courant :
whoami
Vous pouvez également utiliser :
id
Cette commande affiche votre identité utilisateur ainsi que les groupes auxquels votre session appartient.
Nous approfondirons précisément propriétaire et groupes dans l’article suivant.
Pour aujourd’hui, gardez une seule idée : les permissions n’existent pas seules ; elles s’appliquent à différentes catégories d’utilisateurs.
Première modification avec chmod
Regardez les permissions :
ls -l rapport.txt
Supposons que vous obteniez :
-rw-r--r--
Nous allons retirer au propriétaire la permission d’écriture :
chmod u-w rapport.txt
Puis vérifiez immédiatement :
ls -l rapport.txt
Vous devriez maintenant obtenir quelque chose ressemblant à :
-r--r--r--
u désigne le propriétaire, - signifie retirer et w signifie écriture.
Donc u-w peut se lire presque comme une phrase : retirer au propriétaire la permission d’écriture.
La règle observer → agir → vérifier
Avant :
ls -l rapport.txt
Action :
chmod u-w rapport.txt
Après :
ls -l rapport.txt
Cette méthode est plus importante que mémoriser cinquante options.
Vous devez simplement pouvoir répondre à trois questions : quel est l’état actuel ? quelle modification vais-je demander ? quel est l’état obtenu ?
Rendre le droit d’écriture
Remettons maintenant la permission :
chmod u+w rapport.txt
Vérifiez :
ls -l rapport.txt
Vous devriez retrouver :
-rw-r--r--
Cette fois, u+w signifie : ajouter au propriétaire le droit d’écriture.
Ajouter une permission au groupe
Essayons maintenant :
chmod g+w rapport.txt
Puis :
ls -l rapport.txt
Vous devriez voir quelque chose ressemblant à :
-rw-rw-r--
Le groupe possède maintenant lui aussi lecture et écriture.
Retirer ce droit
Revenons à l’état précédent :
chmod g-w rapport.txt
Puis :
ls -l rapport.txt
Nous retrouvons :
-rw-r--r--
Notre lab reste donc sous contrôle.
Modifier les droits des autres utilisateurs
Ajoutons temporairement l’écriture aux autres :
chmod o+w rapport.txt
Vérifiez :
ls -l rapport.txt
Vous pourriez obtenir :
-rw-r--rw-
Les autres utilisateurs disposent maintenant de la lecture et de l’écriture.
Dans de nombreux contextes réels, donner inutilement l’écriture à tout le monde serait une mauvaise idée.
Nous l’avons fait ici uniquement pour observer le mécanisme.
Retirez immédiatement ce droit :
chmod o-w rapport.txt
Puis vérifiez :
ls -l rapport.txt
Une permission n’est pas une décoration
Pourquoi s’intéresser autant à ces neuf caractères ?
Parce qu’une mauvaise permission peut permettre à quelqu’un de modifier un fichier qu’il ne devrait pas pouvoir modifier.
À l’inverse, des permissions trop restrictives peuvent empêcher une application ou un utilisateur légitime d’accéder à ce dont il a besoin.
La bonne logique n’est donc pas de mettre le maximum de droits pour que ça marche, mais de donner les droits nécessaires et seulement les droits nécessaires.
Provoquer une erreur contrôlée
Nous allons essayer de rendre le fichier non lisible pour son propriétaire :
chmod u-r rapport.txt
Vérifiez :
ls -l rapport.txt
Le premier bloc devrait maintenant manquer de r.
Essayez ensuite :
cat rapport.txt
Selon votre environnement et votre contexte d’exécution, l’accès peut être refusé.
Commencez par :
pwd
Puis :
ls -l rapport.txt
Regardez les permissions. Vous avez volontairement retiré u-r.
Remettez la lecture :
chmod u+r rapport.txt
Puis vérifiez :
ls -l rapport.txt
Et retentez :
cat rapport.txt
Le diagnostic vient des permissions, pas d’une commande lancée au hasard.
Attention : le superutilisateur change la donne
Certains tests de permissions peuvent avoir un résultat différent si vous travaillez avec des privilèges élevés, par exemple en tant que root.
Dans cette série, réalisez les labs avec votre utilisateur normal sauf indication explicite.
Nous introduirons sudo et les privilèges administratifs au moment approprié.
chmod ne signifie pas « donner tous les droits »
Une erreur fréquente lorsqu’on débute consiste à rencontrer :
Permission denied
puis à chercher une commande magique qui donne tous les droits possibles.
Ce n’est pas notre méthode.
Avant toute modification, posez-vous ces questions : qui suis-je ? qui possède le fichier ? quel groupe est concerné ? quelles permissions sont réellement présentes ? quelle permission manque ?
Ensuite seulement, modifiez ce qui est nécessaire.
Petit défi
Créez un nouveau fichier :
touch exercice.txt
Votre mission :
- observez ses permissions ;
- retirez au propriétaire le droit d’écriture ;
- vérifiez ;
- rendez-lui le droit d’écriture ;
- ajoutez l’écriture au groupe ;
- vérifiez ;
- retirez à nouveau l’écriture au groupe ;
- terminez avec les permissions initiales si possible.
Vous devriez pouvoir résoudre ce défi uniquement avec ls -l, chmod et votre compréhension de u, g, o, r, w, x, + et -.
Aller plus loin : plusieurs modifications
chmod peut exprimer plusieurs changements.
Par exemple :
chmod u+rw,g+r,o-rwx rapport.txt
Mais inutile de se précipiter.
Lorsque vous débutez, trois commandes simples et vérifiées sont souvent pédagogiquement meilleures qu’une commande compacte dont vous ne comprenez plus le résultat.
Commencez donc par des opérations comme :
chmod u+w fichier
chmod g-w fichier
chmod o-r fichier
Puis vérifiez après chacune.
Pourquoi nous n’utilisons pas encore 644 et 755
Vous avez probablement déjà croisé :
chmod 644 fichier
ou :
chmod 755 script.sh
Ces nombres représentent eux aussi des permissions.
Mais les apprendre avant de comprendre r, w, x, u, g et o revient souvent à mémoriser des codes sans comprendre leur sens.
Nous allons donc volontairement séparer les deux apprentissages.
Un prochain article sera consacré à chmod, notamment à la notation symbolique et octale.
Un point de vigilance pour plus tard
Les permissions rwx ne sont pas toujours l’unique mécanisme pouvant influencer un accès.
Les systèmes Linux peuvent également utiliser d’autres mécanismes, comme des ACL, des attributs de fichiers ou des politiques de sécurité supplémentaires.
Nous n’en avons pas besoin pour comprendre le lab d’aujourd’hui.
Retenez simplement qu’un jour, lorsqu’un rwx semble correct mais qu’un accès échoue encore, il pourra y avoir une autre couche à examiner.
Nettoyage / rollback
Revenez dans votre répertoire personnel :
cd
Vérifiez où vous êtes :
pwd
Vérifiez que le lab existe :
ls
Puis supprimez uniquement notre environnement de test :
rm -r linux-sans-magie-lab
Vérifiez :
ls
Le lab doit avoir disparu.
Ce qu’il faut retenir
La chaîne :
-rw-r--r--
n’est plus un bloc mystérieux.
Elle se lit progressivement : - pour un fichier ordinaire, puis rw- pour le propriétaire, r-- pour le groupe et r-- pour les autres.
Les lettres essentielles sont r pour lire, w pour écrire et x pour exécuter.
Pour agir dessus, u désigne le propriétaire, g le groupe, o les autres ; + ajoute un droit, - le retire et = définit précisément les droits.
Enfin, gardez la méthode de toute la série : observer → agir → vérifier.
Références officielles
- GNU Coreutils — File permissions : https://www.gnu.org/software/coreutils/manual/html_node/File-permissions.html
- GNU Coreutils — Setting permissions : https://www.gnu.org/software/coreutils/manual/html_node/Setting-Permissions.html
Conclusion
Vous savez maintenant regarder -rw-r--r-- et commencer à comprendre ce que Linux vous raconte.
Vous avez également effectué vos premières modifications de permissions sans utiliser de nombres mystérieux ni donner tous les droits à tout le monde.
Mais une question reste volontairement en suspens : qui sont exactement le propriétaire et le groupe affichés par ls -l, et comment Linux décide-t-il à quel groupe appartient un utilisateur ?
C’est précisément le sujet du prochain article prévu dans la séquence :
Linux sans magie #6 — Propriétaire, groupe et droits : qui peut faire quoi sur un fichier ?
