Aussi disponible en : English · Español · Português · العربية
Calculateur chmod
Des permissions vers l’octal et retour, avec la sortie de ls, la commande prête à coller et un avertissement quand un bit spécial n’a rien sur quoi agir.
Qu’est-ce qu’un calculateur chmod ?
Sur un système Unix, chaque fichier porte neuf bits de permission : lecture, écriture et exécution, pour le propriétaire, pour le groupe et pour tous les autres. La commande chmod les fixe, et elle les prend sous forme de nombre octal — les fameux 755 ou 644. Un calculateur chmod traduit les cases auxquelles vous pensez en le nombre que chmod attend, et réciproquement.
Au-dessus de ces neuf-là, il y a trois autres bits. setuid et setgid font tourner un programme sous l’identité du propriétaire ou du groupe du fichier plutôt que sous celle de qui l’a lancé ; le bit sticky, sur un répertoire, empêche chacun de supprimer les fichiers des autres — c’est très exactement pourquoi un /tmp partagé est sûr. Ces trois-là forment le chiffre de tête : 1777 est /tmp, et 4755 un binaire setuid.
Ce calculateur va dans les deux sens. Cochez les cases et lisez le nombre, ou collez un mode — 755, 4755, rwxr-xr-x, ou le champ de permissions entier recopié depuis ls -l avec son d initial — et les cases se placent d’elles-mêmes.
Comment s’en servir
- Cochez les permissions voulues. Neuf cases pour les permissions ordinaires et trois pour les bits spéciaux. Le nombre octal et le rendu de ls se mettent à jour au fur et à mesure.
- Copiez la commande, pas seulement le nombre. La ligne de commande est écrite en entier et prête à coller : il n’y a rien à réassembler.
- Ou collez un mode que vous avez déjà. Octal ou symbolique, les deux fonctionnent. C’est le sens qu’on veut quand on lit une sortie de ls ou un Dockerfile et qu’on cherche à savoir ce qui est réellement autorisé.
La majuscule qui signifie que le bit ne fait rien
Chaque bit spécial modifie un bit d’exécution. setuid modifie celui du propriétaire, setgid celui du groupe, et le bit sticky celui des autres. Si vous activez un bit spécial alors que son bit d’exécution est éteint, le bit est posé et n’a rien sur quoi agir — et ls vous le dit en affichant une majuscule au lieu d’une minuscule. 4755 s’affiche rwsr-xr-x ; 4644 s’affiche rwSr--r--, avec un S majuscule.
Ce n’est pas un cas marginal. Sur les 3 584 modes possibles portant au moins un bit spécial, 2 368 — soit 66,1 % — affichent au moins une majuscule. Par bit, c’est exactement la moitié, parce qu’un bit spécial et le bit d’exécution qu’il modifie se posent indépendamment l’un de l’autre. Ce chiffre n’est pas une estimation : l’espace entier ne fait que 4 096 modes, ils ont donc tous été convertis et vérifiés plutôt qu’échantillonnés.
Presque tous les calculateurs chmod affichent un s ou un t minuscule quoi qu’il arrive, ce qui transforme silencieusement une erreur en quelque chose qui a l’air correct. Celui-ci montre la majuscule et dit quel bit est inerte, et pourquoi.
Une précision dans l’autre sens, puisque c’est ce qu’on raconte de travers : le sens du bit sticky dépend de ce à quoi il est posé. Sur un répertoire, il restreint la suppression, ce qui est l’effet recherché. Sur un fichier ordinaire, tous les systèmes en service aujourd’hui l’ignorent.
Limites honnêtes, et la question de l’umask
Un umask n’est pas une permission, c’est un masque de permissions à retirer, et il ne peut que soustraire. Voilà pourquoi le même umask 022 donne 644 à un nouveau fichier et 755 à un nouveau répertoire : la différence ne vient pas de l’umask, elle vient de ce que les programmes demandent 666 pour créer un fichier et 777 pour créer un répertoire, et que l’umask retire les mêmes bits à chacun. Le panneau ci-dessus affiche les deux résultats pour que l’asymétrie se voie au lieu de surprendre.
Ce que cette page ne peut pas vous dire, c’est si un mode est sûr sur votre système, car cela dépend de choses que le nombre ne contient pas : qui possède le fichier, quels groupes existent, si un répertoire parent permet seulement d’y accéder, et si SELinux ou AppArmor ont leur mot à dire. Un 777 sur un fichier situé dans un répertoire que personne ne peut traverser est inatteignable ; un 644 dans un répertoire ouvert à l’écriture pour tous peut malgré tout être remplacé.
Il ne modélise pas non plus les ACL. Si un fichier porte des listes de contrôle d’accès étendues, ls ajoute un signe plus à la fin du champ de permissions et les neuf bits ne racontent plus toute l’histoire. Ce calculateur lit les neuf bits et les trois bits spéciaux, et rien d’autre — c’est le périmètre honnête d’un calculateur de mode.
Enfin, il s’agit de sémantique Unix. Les permissions de Windows relèvent d’un modèle entièrement différent, et un nombre produit ici n’y signifie rien.
Pourquoi est-ce gratuit ?
Parce que cela ne coûte rien à faire tourner. Le calcul a lieu dans votre navigateur ; rien n’est envoyé, aucun serveur n’intervient et il n’y a pas de compte.
Le rendu est vérifié contre les règles du système d’exploitation lui-même et non contre un autre calculateur : les 4 096 modes possibles sont comparés à la sortie d’une implémentation conforme à POSIX, et le test qui s’en charge est conservé à côté du code.