Référence des permissions Unix · Gratuit

Calculateur chmod

Transformez les cases lecture, écriture et exécution en un mode octal, une chaîne symbolique et une commande chmod, ou collez un mode que vous avez déjà pour voir, en termes simples, exactement qui il laisse entrer.

Pur calcul dans ce navigateur · Rien n'est importé
Signaler un problème

Mode 755, symbolique rwxr-xr-x, sur un fichier. chmod 755 script.sh. Aucun avertissement.

Grille des permissions

Neuf cases, trois chiffres

Chaque classe a son propre chiffre octal, et chaque chiffre n'est que la somme des cases cochées.

Permissions de lecture, d'écriture et d'exécution pour le propriétaire, le groupe et tous les autres utilisateurs
ClasseLecturer · 4Écriturew · 2Exécutionx · 1Chiffre
Propriétaireu · utilisateur7
Groupeg · groupe5
Autreso · autres5
Lecture sur un fichier

Ouvrir le fichier et lire ses octets, ou le copier ailleurs.

Écriture sur un fichier

Modifier ou tronquer le contenu. La suppression du fichier dépend en revanche de son répertoire.

Exécution sur un fichier

Le lancer comme programme. Un script a aussi besoin de la lecture, car l'interpréteur doit l'ouvrir.

Table des chiffres0 = ---1 = --x2 = -w-3 = -wx4 = r--5 = r-x6 = rw-7 = rwx
Le quatrième chiffre

setuid, setgid et le sticky bit

Ces trois bits se placent devant le mode, dans un chiffre que la plupart des gens n'écrivent jamais. Chacun change l'identité que prend un processus ou ce qu'autorise un répertoire ; lisez la note avant d'en activer un.

En clair

Ce que 755 autorise sur ce fichier

  • Propriétaire
    u · 7

    Le propriétaire peut lire le fichier, modifier le fichier et le lancer comme programme.

    Un seul compte : l'identifiant utilisateur enregistré dans l'inode, et le premier des deux noms d'une ligne ls -l. Root contourne presque entièrement ces vérifications, si bien qu'un mode ne contraint jamais que les utilisateurs ordinaires.

  • Groupe
    g · 5

    Les membres du groupe peuvent lire le fichier et le lancer comme programme.

    Tous les comptes du groupe du fichier, qui est le second nom d'une ligne ls -l. C'est l'appartenance au groupe qui permet à une équipe de partager l'accès en écriture sans l'ouvrir à toute la machine.

  • Autres
    o · 5

    Tous les autres peuvent lire le fichier et le lancer comme programme.

    Tous ceux que les deux premières classes n'ont pas couverts : les autres sessions, et tous les comptes de démons comme www-data ou nobody. C'est dans cette classe qu'atterrissent les attaquants.

Contrôles de sécurité

Ce qu'il faut savoir sur ce mode

Rien ici ne semble contre-productif

Aucun bit d'écriture pour tous, aucun bit spécial inopérant. Cela ne veut pas dire que le mode est correct : il doit encore correspondre à l'usage de ce fichier.

Modes éprouvés

Partez du mode que l'usage demande habituellement

Arborescence complète

Corriger tous les niveaux d'un coup

Un seul chmod récursif donne le même mode aux répertoires et aux documents : soit les fichiers deviennent exécutables, soit on ne peut plus entrer dans les répertoires. Séparez l'opération en deux et chaque type obtient ce dont il a besoin.

Répertoires → 755
find script.sh -type d -exec chmod 755 {} +
Fichiers → 644
find script.sh -type f -exec chmod 644 {} +
umask

Le mode de départ des nouveaux fichiers

Un umask soustrait. Le noyau propose 666 à un nouveau fichier et 777 à un nouveau répertoire, puis efface chaque bit désigné par le masque.

Nouveaux fichiers
644
Nouveaux répertoires
755

Avec le 022 habituel, c'est pour cela qu'un fichier que vous venez de créer arrive en 644 et non en 666 : le masque a retiré les bits d'écriture du groupe et des autres avant même que vous le voyiez. Rien ici ne modifie votre shell ; c'est un calcul sur la valeur saisie.

Comment ça marche

Trois classes, trois bits, un nombre.

Unix enregistre les permissions sous forme de neuf bits : lecture, écriture et exécution, répétés pour le propriétaire, le groupe et tous les autres. Regroupez ces bits par trois et chaque triplet tient dans un seul chiffre octal de 0 à 7, ce qui est la seule raison pour laquelle chmod accepte des nombres comme 755 plutôt qu'une phrase. Le noyau vérifie les classes dans l'ordre (le propriétaire d'abord, puis le groupe, puis les autres) et s'arrête à la première qui vous correspond : un mode généreux envers les autres ne peut donc pas sauver un propriétaire à qui l'accès a été refusé.

  1. 01

    Indiquez s'il s'agit d'un fichier ou d'un répertoire

    Les trois mêmes bits n'ont pas le même sens dans les deux cas. Basculez d'abord l'interrupteur et toutes les explications de la page suivent : exécuter ne signifie plus lancer, mais entrer.

  2. 02

    Cochez les cases ou collez ce que vous avez déjà

    Activez lecture, écriture et exécution pour le propriétaire, le groupe et les autres. Vous avez déjà un mode sous les yeux ? Collez 0644 ou les dix caractères d'un listage ls -l dans le champ inverse et la grille se remplit toute seule.

  3. 03

    Saisissez le chemin et récupérez la commande

    Indiquez la vraie cible, puis copiez la commande octale, la forme par affectation pour les scripts, ou la paire de commandes find qui donne des modes différents aux répertoires et aux documents en une seule passe.

Conçu pour réparer de vrais serveurs

Toutes les formes d'un mode, toujours synchronisées.

Une grille, quatre notations

La grille de cases, l'octal à trois chiffres, l'octal à quatre chiffres, la chaîne symbolique et la ligne ls -l sont toutes des vues des neuf mêmes bits, et chacune se redessine à chaque frappe.

Il lit les modes aussi bien qu'il les écrit

Collez 700, 0755, rwxrwxr-x ou drwxr-xr-x. La forme de listage à dix caractères règle même l'interrupteur fichier ou répertoire d'après sa première lettre, et toute saisie illisible est signalée au lieu d'être ignorée en silence.

La sémantique des répertoires, en toutes lettres

La lecture liste les noms, l'écriture ajoute et supprime des entrées, l'exécution laisse passer une recherche de chemin. Ces phrases sont générées à partir de votre mode, pas tirées d'un tableau figé.

Le quatrième chiffre, sans les idées reçues

setuid, setgid et sticky ont chacun leur propre bouton et leur propre explication, y compris les cas que le noyau ignore complètement : setuid sur un script shell, sticky sur un fichier ordinaire.

Des avertissements là où les erreurs se produisent vraiment

Écriture pour tous, un bit setuid sur un fichier que personne ne peut exécuter, un script exécutable mais pas lisible : chaque cas est signalé dans sa propre couleur, avec la raison plutôt qu'un sermon.

Des commandes à coller telles quelles

L'octal, la forme par affectation u=rwx,g=rx,o=rx et les deux commandes find pour une arborescence mixte, avec le chemin cible que vous avez saisi déjà en place. Tout est généré dans votre navigateur.

Questions sur les permissions

Chiffres octaux, bits spéciaux, répertoires et umask.

Que signifie vraiment chmod 755 ?+

Chaque chiffre correspond à une classe : le propriétaire, puis le groupe, puis les autres. Dans un chiffre, la lecture vaut 4, l'écriture 2 et l'exécution 1 : 7 vaut donc 4+2+1 (lecture, écriture, exécution), 5 vaut 4+1 (lecture et exécution) et 0 ne donne rien. 755 permet donc tout au propriétaire, tandis que le groupe et tous les autres peuvent lire et exécuter, mais pas modifier. C'est le mode habituel d'un programme et de presque tous les répertoires d'un système.

Quelle est la différence entre 644 et 755 ?+

Uniquement le bit d'exécution. 644 donne au propriétaire la lecture et l'écriture, et la lecture à tous les autres ; 755 ajoute l'exécution pour les trois classes. Les fichiers de données veulent 644 ; un bit d'exécution sur un PDF ou une photo ne fait que semer la confusion. Les programmes, les scripts shell et tous les répertoires veulent 755, car on ne peut pas entrer dans un répertoire sans exécution, même si l'on peut le lister.

Pourquoi chmod 777 est-il un problème de sécurité et non une solution ?+

Il accorde l'écriture à tous les comptes de la machine, y compris les comptes de service qu'un attaquant atteint en premier. Un serveur web tournant sous www-data qui peut réécrire l'application qu'il sert transforme une petite faille d'import de fichiers en exécution de code arbitraire. Recourir à 777 signifie aussi que la vraie cause (généralement le mauvais propriétaire ou le mauvais groupe) n'est jamais trouvée, si bien que l'exposition demeure longtemps après que l'erreur d'origine a été oubliée. Corrigez la propriété avec chown et accordez le mode le plus restreint qui fonctionne.

Quand ai-je besoin d'un quatrième chiffre ?+

Seulement pour définir setuid (4000), setgid (2000) ou le sticky bit (1000). Écrire 755 ou 0755 revient au même, car un chiffre initial absent vaut zéro. C'est en retirant ces bits que la surprise arrive : GNU chmod laisse volontairement intacts le setuid et le setgid d'un répertoire si vous ne les nommez pas, donc sous Linux ni chmod 755 ni chmod 0755 ne retirent le setgid d'un répertoire ; il faut chmod g-s, chmod =755 ou le chmod 00755 à cinq chiffres. Le chmod de BSD, macOS compris, les retire au contraire avec un simple mode à trois chiffres. Sur un fichier ordinaire, toutes les versions les retirent.

Que signifie un S ou un T majuscule dans une ligne ls -l ?+

Cela signifie que le bit spécial est activé mais pas le bit d'exécution correspondant, si bien que le bit spécial ne peut pas agir. rwSr--r-- est un fichier setuid que le propriétaire ne peut pas exécuter ; drwxrwxrwT est un répertoire sticky sans exécution pour les autres. Un s ou un t minuscule signifie que les deux bits sont activés et que le comportement est effectif. Une majuscule signifie généralement que le bit d'exécution a été retiré après l'activation du bit spécial, ou qu'un mode à quatre chiffres a été saisi sans le x correspondant ; dans les deux cas, le mode ne fait pas ce qu'il semble faire.

Pourquoi quelqu'un peut-il supprimer mon fichier sans avoir la permission d'écriture dessus ?+

Parce que supprimer n'est pas une opération sur le fichier, mais sur le répertoire qui contient le nom. L'écriture plus l'exécution sur le répertoire suffisent pour délier n'importe quelle entrée qu'il contient, quoi qu'en dise le fichier lui-même. C'est précisément la brèche que referme le sticky bit : dans un répertoire 1777 comme /tmp, seul le propriétaire d'une entrée, le propriétaire du répertoire ou root peut la supprimer.

Que fait le bit d'exécution sur un répertoire ?+

Il accorde la traversée : le droit de résoudre un nom à l'intérieur et d'atteindre tout ce qui se trouve plus bas. La lecture et l'exécution sont indépendantes : la lecture sans l'exécution vous permet de lister les noms sans pouvoir les utiliser, donc ls fonctionne mais l'ouverture de n'importe quel résultat échoue. L'exécution sans la lecture est l'inverse, et c'est une vraie technique : le mode 711 sur un répertoire personnel permet à un serveur web d'atteindre public_html sans laisser quiconque lister le reste de son contenu. Chaque répertoire d'un chemin a besoin de l'exécution, sinon la recherche échoue à ce niveau.

Quel est le lien entre umask et chmod ?+

chmod définit un mode directement ; umask ne fait que retirer des bits, et seulement au moment où quelque chose est créé. Le noyau propose 666 pour un nouveau fichier et 777 pour un nouveau répertoire, puis efface chaque bit désigné par le masque : c'est pourquoi le umask courant de 022 produit des fichiers 644 et des répertoires 755, et pourquoi les nouveaux fichiers ne sont jamais exécutables. C'est un réglage propre à chaque processus : le modifier dans un shell affecte ce shell et ses processus enfants, et rien de ce qui existe déjà.

D'autres outils ciblés, prêts quand vous l'êtes.

Découvrez une collection grandissante pour les calculs, les documents, la rédaction et le travail de tous les jours.

Voir tous les outils