Calculateur chmod
Convertit les permissions de fichiers Unix entre octal (755), symbolique (rwxr-xr-x) et une grille de cases, avec setuid, setgid et le bit sticky.
| Classe | Lecture | Écriture | Exécution |
|---|---|---|---|
| Propriétaire | |||
| Groupe | |||
| Autres |
chmod 644 filechmod u=rw,g=r,o=r file-rw-r--r--Ce que fait cet outil
Chaque fichier d’un système Unix porte un ensemble de permissions qui décident qui peut le lire, le modifier ou l’exécuter. La commande chmod les définit, et elle accepte ces permissions sous deux écritures assez différentes — un nombre octal à trois chiffres et une chaîne de lettres — qui décrivent exactement la même chose. Cet outil garde les deux écritures synchronisées, ainsi qu’une grille de cases, afin que vous puissiez partir de celle que vous avez et copier celle dont vous avez besoin.
Tout s’exécute dans votre navigateur et relève de l’arithmétique pure : il n’y a pas de serveur et rien de ce que vous saisissez n’est envoyé ailleurs. C’est une calculatrice et une référence, pas un moyen de modifier les permissions sur une vraie machine — pour cela, vous copiez la commande chmod produite et vous l’exécutez vous-même.
Trois groupes, trois permissions
Les permissions s’organisent en trois groupes de trois. Les groupes sont le propriétaire du fichier, le groupe auquel il appartient et tous les autres — « autres ». Dans chaque groupe se trouvent trois permissions : lecture, écriture et exécution.
- Lecture (r) — consulter le contenu du fichier, ou lister les entrées d’un répertoire.
- Écriture (w) — modifier le fichier, ou ajouter et supprimer des entrées dans un répertoire.
- Exécution (x) — lancer le fichier comme programme, ou entrer dans un répertoire et atteindre les fichiers qu’il contient.
L’exécution ne signifie pas la même chose pour un répertoire que pour un fichier, et cela surprend : un répertoire que vous pouvez lire mais pas exécuter vous laisse voir les noms de ce qu’il contient, sans pouvoir en ouvrir aucun.
Comment fonctionne le nombre octal
Les trois permissions de chaque groupe tiennent dans un chiffre octal en additionnant des valeurs fixes : lecture vaut 4, écriture 2 et exécution 1. Lecture-écriture-exécution donne 4+2+1 = 7 ; lecture-exécution donne 4+1 = 5 ; lecture-écriture donne 4+2 = 6. Trois groupes donnent trois chiffres.
755 7 = 4+2+1 # propriétaire : lecture + écriture + exécution 5 = 4+0+1 # groupe : lecture + exécution 5 = 4+0+1 # autres : lecture + exécution
Ainsi 755 signifie « le propriétaire peut tout faire, les autres peuvent lire et exécuter mais pas modifier », le mode habituel d’un programme ou d’un répertoire. 644 — lecture-écriture pour le propriétaire, lecture seule pour les autres — est le mode habituel d’un fichier ordinaire. Une fois le motif familier, les modes courants se lisent d’un coup d’œil.
La chaîne symbolique
L’autre écriture est celle qu’affiche ls -l : neuf caractères, trois par groupe, chacun étant soit sa lettre, soit un tiret. 755 s’écrit rwxr-xr-x ; 644 s’écrit rw-r--r--. Elle contient exactement la même information que le nombre octal, simplement disposée de façon à voir chaque permission au lieu d’additionner des chiffres de tête.
Une ligne de ls -l comporte un dixième caractère au début : un d pour un répertoire, un tiret pour un fichier ordinaire, un l pour un lien symbolique. Ce caractère initial est le type du fichier, pas une permission, et chmod ne peut pas le changer. Vous pouvez coller ici tout le champ de permissions de ls -l : le caractère de type est simplement ignoré.
Les bits spéciaux : setuid, setgid et sticky
Au-dessus des neuf bits ordinaires se trouvent trois bits spéciaux, écrits sous la forme d’un quatrième chiffre octal facultatif en tête — setuid (4), setgid (2) et le bit sticky (1). Ils n’ont pas de colonne propre ; chacun se superpose à une case d’exécution de la chaîne symbolique, d’où viennent les majuscules qui déroutent tant.
- setuid sur un exécutable le fait tourner en tant que propriétaire du fichier plutôt qu’en tant qu’utilisateur qui l’a lancé. C’est ainsi que passwd peut mettre à jour un fichier système où vous ne pouvez pas écrire directement — et pourquoi un programme setuid comportant un bogue est une faille sérieuse.
- setgid sur un exécutable le lance avec le groupe du fichier. Sur un répertoire, il fait quelque chose de plus utile et plus sûr : les nouveaux fichiers créés à l’intérieur héritent de ce groupe au lieu de celui du créateur.
- Le bit sticky sur un répertoire signifie que seul le propriétaire d’un fichier peut le supprimer ou le renommer, même quand tout le monde peut écrire dans le répertoire. C’est ce qui garde /tmp partagé mais sûr. Sur un fichier ordinaire, il ne fait rien.
Dans la chaîne symbolique, un bit spécial actif transforme sa case d’exécution en lettre : s dans la case du propriétaire pour setuid, s dans celle du groupe pour setgid, t dans celle des autres pour sticky. La casse indique si l’exécution est également active — minuscule pour oui, majuscule pour non.
rwsr-xr-x 4755 # setuid, et le propriétaire exécute rwSr-xr-x 4655 # setuid, mais le propriétaire n’exécute PAS rwxrwxrwt 1777 # sticky, et les autres exécutent rwxrwxrwT 1776 # sticky, mais les autres n’exécutent PAS
Un S ou un T majuscule est presque toujours une erreur : cela signifie qu’un bit spécial a été posé sur un fichier non exécutable, si bien que le bit n’a rien sur quoi agir.
Octal ou symbolique en ligne de commande
chmod accepte les deux formes, et cet outil écrit les deux. La forme octale fixe tous les bits d’un coup : chmod 755 file. La forme symbolique avec = fait de même de façon absolue — chmod u=rwx,g=rx,o=rx file — en énumérant chaque groupe afin que le résultat ne dépende pas de l’état initial du fichier.
Il existe une troisième forme, relative, dont la calculatrice n’a pas besoin mais que vous rencontrerez : chmod +x file ajoute l’exécution pour tous, chmod g-w file retire l’écriture au groupe, chmod o= file efface tout pour les autres. Cette forme modifie les bits par rapport au mode courant au lieu de définir l’ensemble, ce qui est pratique en ligne de commande mais n’a pas de « résultat » unique à afficher.
Des modes à ne pas poser
Un outil de permissions devrait aussi dire quand un mode est une mauvaise idée. Deux reviennent sans cesse :
- 777 donne à tout utilisateur la lecture, l’écriture et l’exécution. C’est le correctif réflexe quand quelque chose « ne marche pas », et il échange presque toujours un petit problème contre une vraie faille de sécurité. Le bon mode est presque toujours plus étroit — en général 755 ou 644.
- Tout fichier modifiable par tous (le dernier chiffre incluant 2) permet à n’importe quel compte de la machine d’en réécrire le contenu. Pour ce qui est exécuté, chargé ou considéré comme fiable, c’est une porte d’entrée. Accordez plutôt l’écriture à un groupe, ou gardez-la pour le propriétaire.
L’outil les signale lorsqu’ils apparaissent. Il ne peut pas savoir si votre cible est un fichier ou un répertoire ; il les présente donc comme des points méritant un second regard, non comme des erreurs — le bit sticky est correct sur un répertoire et inutile sur un fichier, et vous seul savez ce que vous avez.
Questions fréquentes
- Quelle est la différence entre 644 et 755 ?
- 644 donne lecture et écriture au propriétaire et lecture seule aux autres, le mode habituel d’un fichier ordinaire. 755 ajoute l’exécution pour les trois groupes, ce dont un programme a besoin pour tourner et un répertoire pour être ouvert. Utilisez 644 pour les documents et les fichiers source, 755 pour les scripts et les répertoires.
- Pourquoi mon mode affiche-t-il un S ou un T majuscule ?
- Parce qu’un bit spécial a été posé sur un groupe qui n’a pas la permission d’exécution. Un s ou un t minuscule signifie que le bit spécial et l’exécution sont tous deux actifs ; la forme majuscule signifie que le bit spécial est actif mais pas l’exécution, ce qui indique en général que le mode n’est pas celui voulu — par exemple 4644 (rwSr--r--) est setuid sur un fichier que personne ne peut exécuter.
- Que fait vraiment chmod 777, et pourquoi le déconseille-t-on ?
- Il accorde lecture, écriture et exécution au propriétaire, au groupe et à tous les autres — un accès total pour chaque compte du système. On le déconseille parce qu’il supprime toutes les protections d’un coup : un fichier que tout le monde peut écrire est un fichier que n’importe qui peut altérer, et un répertoire que tout le monde peut écrire est un répertoire où n’importe qui peut déposer des fichiers. Presque tous les cas qui appellent 777 se résolvent avec 755 ou 644 et la bonne appartenance.
- Le chiffre de tête est-il obligatoire ?
- Non. Quand aucun bit spécial n’est actif, le mode tient en trois chiffres — 755, et non 0755 — et c’est ce qu’affiche cet outil. Un zéro initial est accepté et signifie la même chose ; un 4, un 2 ou un 1 initial active respectivement setuid, setgid ou le bit sticky.
- Puis-je coller une ligne directement depuis ls -l ?
- Oui. Collez le champ de permissions de dix caractères, comme -rwxr-xr-x ou drwxr-xr-x : l’outil retire le caractère de type initial et lit le reste. Le type (fichier, répertoire, lien) n’est pas une permission et chmod ne peut pas le changer, il est donc ignoré.
- Ce que je saisis est-il envoyé à un serveur ?
- Non. Tout l’outil est une arithmétique qui s’exécute dans votre navigateur. Rien n’est téléversé, journalisé ni stocké, et c’est aussi pourquoi il fonctionne sans aucune connexion réseau.