À quoi sert chmod ?
chmod (change mode) est la commande Linux et Unix qui définit qui peut lire, écrire et exécuter un fichier ou un dossier. Chaque fichier possède trois jeux de droits : un pour son propriétaire (owner), un pour son groupe (group) et un pour tous les autres (others). Le calculateur ci-dessus transforme ces neuf cases en nombre ou en lettres attendus par chmod, et inversement.
Vous pouvez donner un mode à chmod de deux façons : sous forme de nombre octal, comme chmod 755 script.sh, ou sous forme symbolique, comme chmod u+x script.sh. Seul le propriétaire du fichier ou root peut modifier ses droits.

Comment fonctionnent les droits des fichiers sous Linux
Chaque droit a une valeur : lecture = 4, écriture = 2 et exécution = 1. Additionnez-les pour chaque classe afin d'obtenir un chiffre de 0 à 7, puis écrivez les trois chiffres dans l'ordre : propriétaire, groupe, autres. Ainsi rwx vaut 4+2+1 = 7, r-x vaut 4+0+1 = 5, et rwxr-xr-x vaut 755.
Lancez ls -l et vous voyez la même chose en lettres, par exemple -rwxr-xr-x. Le premier caractère est le type de fichier (- pour un fichier ordinaire, d pour un répertoire, l pour un lien symbolique), suivi de trois groupes rwx pour le propriétaire, le groupe et les autres. Un tiret signifie que ce droit est désactivé.
Les lettres n'ont pas tout à fait le même sens pour les fichiers et pour les dossiers :
Fichier : l'ouvrir et lire son contenu. Dossier : lister les noms qu'il contient avec ls.
Fichier : modifier son contenu. Dossier : créer, supprimer et renommer des fichiers à l'intérieur (cela nécessite aussi le droit d'exécution sur le dossier). La suppression d'un fichier dépend du droit d'écriture du dossier, pas de celui du fichier.
Fichier : le lancer comme programme ou script. Dossier : y entrer avec cd et ouvrir les fichiers qu'il contient par leur nom. Avec la lecture mais sans l'exécution, vous pouvez lister les noms d'un dossier, mais pas ouvrir ce qu'il contient.
u est le propriétaire (user) du fichier, g son groupe et o tous les autres. Linux n'applique que la première classe qui vous correspond : si vous êtes le propriétaire, les droits du groupe et des autres ne s'appliquent pas à vous, même s'ils en autorisent davantage.
Advertisement
Droits chmod courants et quand les utiliser
Ces modes couvrent presque tous les cas réels. La plupart sont aussi des boutons prédéfinis dans le calculateur.
Le mode par défaut de la plupart des fichiers : pages web, images et fichiers de configuration non secrets. Le propriétaire peut les modifier, tous les autres peuvent seulement les lire.
Le mode par défaut des répertoires et des programmes ou scripts que tout le monde peut lancer. Seul le propriétaire peut les modifier.
Seul le propriétaire peut lire ou écrire. Utilisez-le pour les clés privées SSH, les fichiers .env, les jetons d'API et tout ce qui contient un mot de passe.
Seul le propriétaire peut ouvrir ou lister le dossier. C'est le standard pour ~/.ssh et les dossiers de scripts personnels.
Le propriétaire modifie, un groupe (par exemple celui du serveur web) lit, et personne d'autre ne peut voir le fichier.
Le propriétaire a un accès complet, le groupe peut ouvrir et lire le dossier, et les autres n'y ont pas accès.
Le propriétaire et le groupe peuvent tous deux modifier. Courant sur les serveurs d'équipe où plusieurs utilisateurs partagent un groupe.
Le propriétaire et le groupe peuvent créer et supprimer des fichiers à l'intérieur ; les autres peuvent seulement consulter.
Seul le propriétaire peut lire, et personne ne peut écrire. AWS vous demande d'exécuter chmod 400 sur une paire de clés .pem téléchargée avant de l'utiliser avec SSH.
Chaque utilisateur et processus de la machine peut le lire, le modifier et l'exécuter. Ce n'est presque jamais la bonne solution, comme l'explique la section suivante.
chmod 755, 644 ou 777 ?
755 et 644 ne diffèrent que par le bit d'exécution : 755 permet à tout le monde de lancer le fichier ou d'ouvrir le dossier, 644 non. C'est pourquoi la règle habituelle est dossiers en 755, fichiers en 644 : les dossiers ont besoin de l'exécution pour qu'on puisse y entrer, alors que la plupart des fichiers ne devraient jamais être exécutés.
777 donne le droit d'écriture à tous les comptes de la machine, y compris l'utilisateur du serveur web. Si un site ou un script du serveur est compromis, l'attaquant peut alors modifier ou remplacer vos fichiers, injecter un malware dans vos pages ou installer une porte dérobée. Quand quelque chose échoue avec « Permission denied », la vraie solution est généralement le bon propriétaire (chown) ou le bon groupe, pas 777.
Droits recommandés pour les cas les plus courants :
Fichiers d'un site web (HTML, PHP, images) :
644. Dossiers d'un site web :755. C'est ce que recommandent WordPress et la plupart des panneaux de contrôle d'hébergement.wp-config.php et les autres fichiers contenant des mots de passe de base de données : WordPress suggère
440ou400pour que les autres utilisateurs du serveur ne puissent pas le lire.600ou640le gardent aussi privé tout en permettant au propriétaire de le modifier.Dossiers d'upload ou de cache dans lesquels le serveur web doit écrire : donnez le droit d'écriture au groupe du serveur web (
775) ou faites de l'utilisateur du serveur web le propriétaire, au lieu d'utiliser777.Dossier ~/.ssh :
700. Clés privées (id_ed25519,id_rsa) :600ou400. authorized_keys :600. Clés publiques (.pub) :644.Scripts shell que vous voulez lancer :
755, ou700si vous seul devez les lancer.chmod +x script.shajoute l'exécution sans toucher aux autres bits.
Advertisement
Corriger « Permissions 0644 are too open » pour les clés SSH
SSH ignore une clé privée que d'autres utilisateurs peuvent lire et affiche WARNING: UNPROTECTED PRIVATE KEY FILE! suivi de Permissions 0644 for '/home/you/.ssh/id_rsa' are too open. Exécutez chmod 600 ~/.ssh/id_rsa (ou chmod 400) et reconnectez-vous. Côté serveur, avec le réglage par défaut StrictModes yes, le démon SSH ignore aussi authorized_keys si ce fichier, ~/.ssh ou votre dossier personnel est modifiable par le groupe ou les autres.
Si les droits sont corrects et que la connexion échoue toujours, vérifiez que le port 22 est ouvert sur le serveur.
Droits spéciaux : setuid, setgid et sticky bit
Un quatrième chiffre, placé en tête, ajoute trois bits spéciaux : 4 = setuid, 2 = setgid et 1 = sticky. Ils s'additionnent comme les autres : 6755 correspond donc à setuid plus setgid. Dans ls -l, ils prennent la place de la lettre d'exécution : s en position propriétaire ou groupe, t en position autres.
Une particularité de Linux : avec GNU, chmod 755 dir (et chmod 0755 dir) laisse en place un bit setuid ou setgid existant sur un répertoire. Pour l'effacer, indiquez-le explicitement avec chmod g-s dir (ou chmod a-s dir pour les deux bits), ou utilisez cinq chiffres : chmod 00755 dir.
Un programme avec setuid s'exécute avec les privilèges de son propriétaire au lieu des vôtres. /usr/bin/passwd est en 4755 (-rwsr-xr-x) sur la plupart des systèmes Linux, ce qui permet aux utilisateurs normaux de mettre à jour le fichier des mots de passe qui appartient à root. Linux ignore setuid sur les scripts shell et sur les répertoires.
Sur un programme, il s'exécute avec le groupe du fichier. Sur un dossier, c'est plus utile : les nouveaux fichiers créés à l'intérieur reçoivent le groupe du dossier, et les nouveaux sous-dossiers héritent de setgid. 2775 est le mode classique d'un dossier d'équipe partagé.
Sur un dossier, seuls le propriétaire d'un fichier, le propriétaire du dossier ou root peuvent supprimer ou renommer les fichiers qu'il contient, même si tout le monde peut y écrire. C'est pourquoi /tmp est en 1777 (drwxrwxrwt). Linux ignore le sticky bit sur les fichiers.
Un S ou un T majuscule dans ls -l signifie que le bit spécial est activé, mais pas le bit d'exécution à la même position. Par exemple, 4644 s'affiche rwSr--r-- et 1666 s'affiche rw-rw-rwT.
Advertisement
Mode symbolique : u, g, o, a avec +, - et =
Le mode symbolique modifie les droits par rapport à ceux déjà en place, ce qu'un simple nombre octal ne permet pas. Il comporte trois parties : qui (u propriétaire, g groupe, o autres, a tous), un opérateur (+ ajouter, - retirer, = définir exactement) et les droits (r, w, x, plus s et t). Séparez plusieurs modifications par des virgules, sans espaces.
chmod +x file sans lettre de classe s'applique aux trois classes, moins ce que bloque votre umask. Avec l'umask habituel 022, cela revient à a+x.
chmod u+x deploy.sh: permet au propriétaire de lancer le script, sans rien changer d'autre.chmod go-w report.txt: retire le droit d'écriture au groupe et aux autres.chmod o= secrets.txt: retire tous les droits aux autres.chmod a+r index.html: tout le monde peut lire le fichier.chmod u=rwx,g=rx,o=rx app: la façon symbolique d'écrire 755. Le calculateur affiche cette forme pour n'importe quel mode.chmod -R u=rwX,go=rX public_html: le X majuscule ajoute l'exécution uniquement aux dossiers et aux fichiers déjà exécutables, si bien que les dossiers finissent en 755 et les fichiers ordinaires en 644.
umask : les droits par défaut des nouveaux fichiers
L'umask détermine les droits que reçoivent les nouveaux fichiers et dossiers. La plupart des programmes créent les fichiers en 666 (rw-rw-rw-) et les dossiers en 777, puis chaque bit activé dans l'umask est désactivé. Avec l'umask courant 022, les nouveaux fichiers sortent en 644 et les nouveaux dossiers en 755.
C'est un masque binaire, pas une soustraction. Avec l'umask 027, les fichiers reçoivent 640 ; soustraire 027 de 666 chiffre par chiffre ne donne même pas un mode valide. Ouvrez l'onglet Umask du calculateur pour voir le résultat de n'importe quelle valeur.
022: fichiers 644, dossiers 755. La valeur par défaut habituelle.002: fichiers 664, dossiers 775. Permet à votre groupe de modifier ce que vous créez ; courant quand chaque utilisateur a un groupe privé.027: fichiers 640, dossiers 750. Rien pour les autres, un bon choix sur les serveurs.077: fichiers 600, dossiers 700. Entièrement privé.Lancez
umaskpour voir le vôtre,umask -Spour l'afficher en lettres etumask 027pour le modifier dans le shell courant. Ajoutez la commande à~/.bashrcou~/.profilepour la conserver.
Advertisement
Comment utiliser le calculateur chmod
Cochez Lecture, Écriture et Exécution pour le propriétaire, le groupe et les autres, ou cliquez sur un mode prédéfini comme 644 ou 755. Chaque ligne affiche son chiffre au fur et à mesure.
Saisissez un nombre octal comme 750 ou 2775, ou collez une chaîne symbolique comme rwxr-x---. Une chaîne ls -l complète comme drwxr-sr-x fonctionne aussi, et le type de fichier s'affiche.
Cochez Setuid, Setgid ou Sticky pour obtenir le mode à 4 chiffres. Un avertissement apparaît quand un mode permet à n'importe qui d'écrire sans le sticky bit.
Saisissez le nom de votre fichier ou dossier, cochez Récursif pour toute une arborescence et copiez la commande chmod numérique ou symbolique. L'adresse de la page conserve le mode (par exemple ?mode=750) : vous pouvez donc l'ajouter à vos favoris ou la partager.
Exemples de commandes chmod
Exécutez-les dans un terminal Linux ou macOS. Ajoutez sudo devant quand le fichier appartient à un autre utilisateur ou à root.
chmod +x deploy.sh # ajoute l'exécution
chmod 755 deploy.sh # ou définit le mode complet
./deploy.shfind /var/www/html -type d -exec chmod 755 {} +
find /var/www/html -type f -exec chmod 644 {} +chmod -R 755 folder # les fichiers deviennent aussi exécutables
chmod -R u=rwX,go=rX folder # dossiers 755, fichiers 644chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519 ~/.ssh/authorized_keys
chmod 644 ~/.ssh/id_ed25519.pubstat -c '%a %n' file # Linux : 644 file
stat -f '%Lp %N' file # macOS : 644 file
stat -f '%Mp%Lp %N' file # macOS avec bits spéciaux : 0644 filechgrp developers /srv/project
chmod 2775 /srv/project # les nouveaux fichiers reçoivent le groupe developersAutres outils pour développeurs
D'autres outils gratuits pour les développeurs et les administrateurs système, qui fonctionnent tous dans votre navigateur. Besoin d'identifiants uniques pour des fichiers ou des enregistrements ? Essayez le générateur UUID.
Plages CIDR, masques de sous-réseau et hôtes utilisables, avec une grille de bits visuelle.
Vérifiez si le port 22, 80, 443 ou tout autre port est ouvert.
Mots de passe aléatoires robustes, avec analyse d'entropie.
Timestamp Unix en date et inversement, dans n'importe quel fuseau horaire.