Calculez les droits de fichiers Unix et la commande chmod
Ce calculateur chmod convertit les droits de fichiers Linux et macOS sous toutes les formes dont vous avez besoin : cochez lecture, écriture et exécution pour le propriétaire, le groupe et les autres, ou saisissez un mode octal comme <code>755</code> ou symbolique comme <code>rwxr-xr-x</code>, et les autres vues suivent. Vous obtenez la commande <code>chmod</code> correspondante en forme numérique et symbolique, les bits setuid, setgid et sticky, et un résumé clair de qui peut faire quoi. Tout est calculé dans votre navigateur.
Comment calculer des droits chmod
- 1Cochez les droits voulus pour Propriétaire, Groupe et Autres, ou saisissez un mode octal comme
644ou symbolique commerw-r--r--. Vous pouvez aussi coller une colonne entière dels -l, commedrwxr-sr-x. - 2Choisissez Fichier ou Répertoire : lecture, écriture et exécution n'ont pas le même sens dans les deux cas, et l'explication s'adapte.
- 3Ajoutez le bit setuid, setgid ou sticky si besoin, ou partez d'un mode courant comme 755 ou 600.
- 4Saisissez le chemin, activez Récursif s'il faut l'appliquer à toute une arborescence, et copiez la commande chmod.
Comment fonctionnent les droits en octal
Chaque fichier a trois jeux de droits : un pour son propriétaire (u), un pour son groupe (g) et un pour les autres (o), c'est-à-dire tout le monde. Chaque jeu compte trois bits — lecture, écriture et exécution — et un chiffre octal n'est que leur somme : lecture vaut 4, écriture 2 et exécution 1. Ainsi 7 vaut rwx (4+2+1), 6 vaut rw- (4+2), 5 vaut r-x (4+1) et 4 vaut r-- seul.
Trois chiffres forment le mode complet, dans l'ordre propriétaire, groupe, autres. chmod 755 donne donc rwx au propriétaire et r-x à tous les autres, soit rwxr-xr-x, tandis que chmod 644 donne rw- au propriétaire et r-- à tous les autres, soit rw-r--r--. Un quatrième chiffre placé devant contient les bits spéciaux : 4 pour setuid, 2 pour setgid et 1 pour sticky, comme dans chmod 1777.
Valeurs chmod courantes
- 644 (rw-r--r--)
- La valeur par défaut des fichiers ordinaires : le propriétaire peut modifier, tout le monde peut lire. Adaptée au HTML, aux images et à la plupart des configurations.
- 755 (rwxr-xr-x)
- La valeur par défaut des répertoires, scripts et programmes : tout le monde peut lire et exécuter, seul le propriétaire peut modifier.
- 600 (rw-------)
- Fichiers privés que seul le propriétaire peut lire : clés privées SSH, fichiers .env, identifiants. ssh refuse une clé privée lisible par d'autres.
- 700 (rwx------)
- Un répertoire privé, comme ~/.ssh, dans lequel seul son propriétaire peut entrer.
- 664 / 775
- Comme 644 et 755, mais le groupe peut aussi écrire : pour les dossiers de projet partagés entre collègues d'un même groupe.
- 777 (rwxrwxrwx)
- Tout le monde peut lire, modifier et exécuter. Presque jamais la bonne solution à une erreur de droits, et un risque de sécurité sur un serveur web.
- 1777 (rwxrwxrwt)
- Accessible en écriture à tous avec le sticky bit, comme /tmp : chacun peut créer des fichiers, mais seul le propriétaire d'un fichier peut le supprimer.
Les droits sur les répertoires
Sur un répertoire, les trois lettres ont un autre sens. Lecture permet de lister les noms qu'il contient ; écriture permet d'y créer, renommer et supprimer des entrées ; exécution (souvent appelée recherche) permet d'y entrer avec cd et d'atteindre les fichiers par leur nom. Lecture et écriture servent peu sans exécution, c'est pourquoi les répertoires ont presque toujours x là où ils ont r — 755 plutôt que 644.
Supprimer un fichier modifie son répertoire, pas le fichier. Toute personne ayant les droits d'écriture et d'exécution sur un répertoire peut supprimer n'importe quel fichier qu'il contient, même un fichier en lecture seule qui ne lui appartient pas — sauf si le répertoire a le sticky bit.
Setuid, setgid et le sticky bit
Dans la forme symbolique, les bits spéciaux remplacent la lettre d'exécution : s quand l'exécution est aussi active et S sinon, et t ou T pour le sticky bit. Une majuscule signale en général une erreur, car un programme setuid que personne ne peut exécuter ne sert à rien.
Une particularité de GNU coreutils : chmod 755 sur un répertoire conserve un bit setuid ou setgid existant. Pour les retirer avec un nombre, écrivez cinq chiffres — chmod 00755 — ou utilisez chmod g-s.
- Setuid (4000, u+s)
- Un exécutable s'exécute avec les privilèges de son propriétaire plutôt que de l'appelant. passwd s'en sert pour écrire /etc/shadow en tant que root. Linux l'ignore sur les scripts et les répertoires.
- Setgid (2000, g+s)
- Un exécutable s'exécute avec les privilèges de son groupe. Sur un répertoire, les nouveaux fichiers héritent du groupe du répertoire au lieu du groupe principal de leur créateur — la configuration habituelle des dossiers d'équipe (2775).
- Sticky bit (1000, +t)
- Sur un répertoire, seuls le propriétaire d'un fichier, le propriétaire du répertoire ou root peuvent supprimer ou renommer les fichiers qu'il contient. Linux moderne l'ignore sur les fichiers.
chmod numérique ou symbolique ?
Un mode numérique comme chmod 644 file définit tous les bits d'un coup, ce qu'il vous faut quand vous connaissez l'état final. La forme symbolique est plus souple : chmod u=rw,g=r,o=r file donne le même résultat, tandis que chmod g+w file ou chmod o-rwx file ne changent que les bits cités et laissent le reste intact.
Attention à chmod -R : un seul mode pour tous les fichiers et répertoires d'une arborescence donne souvent aux fichiers des bits d'exécution qu'ils ne devraient pas avoir. Utilisez find . -type d -exec chmod 755 {} + et find . -type f -exec chmod 644 {} + pour les traiter séparément, ou le X majuscule de chmod -R u=rwX,go=rX, qui n'ajoute l'exécution qu'aux répertoires et aux fichiers qui l'avaient déjà. Les nouveaux fichiers reçoivent leurs droits initiaux du umask : un umask de 022 donne des fichiers en 644 et des répertoires en 755. Pour filtrer des noms de fichiers dans des scripts shell, essayez le testeur de regex.
Questions fréquentes
- Que signifie chmod 755 ?
- 755 donne au propriétaire la lecture, l'écriture et l'exécution (7), et au groupe et à tous les autres la lecture et l'exécution (5 et 5), soit rwxr-xr-x. C'est le mode habituel des répertoires, scripts et programmes.
- Que signifie chmod 644 ?
- 644 donne au propriétaire la lecture et l'écriture (6) et à tous les autres la lecture seule (4 et 4), soit rw-r--r--. C'est le mode habituel des fichiers ordinaires comme les pages web, les images et les fichiers de configuration.
- Quelle est la différence entre 755 et 644 ?
- 755 ajoute l'exécution pour tous. Sur un fichier, cela permet de le lancer comme programme ; sur un répertoire, d'y entrer. Utilisez 644 pour les fichiers qui sont seulement lus et 755 pour les répertoires et les exécutables.
- chmod 777 est-il sûr ?
- Rarement. 777 permet à n'importe quel utilisateur du système de modifier ou remplacer le fichier, et sur un serveur web un attaquant entré par un site peut modifier les autres. Corrigez plutôt le propriétaire avec chown ou donnez l'accès au groupe (775 ou 664).
- Quels droits pour une clé privée SSH ?
- 600 (rw-------), ou 400 en lecture seule, avec ~/.ssh lui-même en 700. OpenSSH refuse d'utiliser une clé privée lisible par d'autres utilisateurs et affiche "UNPROTECTED PRIVATE KEY FILE".
- Que signifie le s ou le t dans rwsr-xr-x ?
- Un s en position propriétaire ou groupe est le bit setuid ou setgid avec l'exécution aussi active ; un t en position autres est le sticky bit. Un S ou T majuscule signifie que le bit spécial est actif sans le droit d'exécution en dessous.
- Comment convertir rwxr-xr-x en nombre ?
- Découpez-le en trois groupes — rwx, r-x, r-x — et additionnez r=4, w=2 et x=1 dans chacun : 7, 5, 5, soit 755. Saisissez-le dans le champ symbolique ci-dessus pour le convertir instantanément.
- Cet outil modifie-t-il des fichiers ?
- Non. Il calcule seulement le mode et la commande ; c'est vous qui lancez la commande. Tout se passe dans votre navigateur.