💻 Serveur & shell

Permissions Linux : comprendre chmod et chown

Notation rwx et octale, chmod, chown, permissions recommandées WordPress, récursivité et correction en masse avec find.

débutant ⏱ 10 min Mise à jour : 2026-04-23

Sous Linux, chaque fichier et chaque dossier porte trois informations de sécurité : un propriétaire, un groupe, et des permissions qui disent qui peut lire, écrire ou exécuter. Mal configurées, ces permissions cassent WordPress, exposent un wp-config.php, ou bloquent un upload. Bien configurées, elles sont la première ligne de défense.

Lire un listing : ls -l

ls -l
-rw-r--r-- 1 user psacln  1520 avr. 23 10:15 index.php
drwxr-xr-x 4 user psacln  4096 avr. 23 10:14 wp-content
-rw------- 1 user psacln   742 avr. 23 10:13 wp-config.php

Le premier bloc de 10 caractères donne le type et les droits :

  • 1er caractère : - fichier, d dossier, l lien symbolique.
  • Caractères 2 à 4 : droits du propriétaire.
  • Caractères 5 à 7 : droits du groupe.
  • Caractères 8 à 10 : droits des autres (tout le monde).

Les trois droits : rwx

DroitSur un fichierSur un dossier
r (read)Lire le contenuLister les fichiers du dossier
w (write)Modifier le contenuCréer, renommer, supprimer des fichiers
x (execute)Exécuter (script, binaire)Entrer dans le dossier (cd)
💡
Le x sur un dossier, c'est le droit de traverse
Sans le x sur un dossier, vous ne pouvez pas y entrer, même si vous avez le r pour le lister. C'est pour ça qu'on voit toujours les dossiers en 755 ou 750, jamais en 644.

La notation octale : 755, 644, 600

Chaque triplet rwx se traduit en un chiffre de 0 à 7 en additionnant les droits présents :

OctalBinaireDroits
7111rwx
6110rw-
5101r-x
4100r--
0000---

On combine ensuite trois chiffres pour propriétaire, groupe et autres. Exemples qu'on croise partout :

  • 755 = rwxr-xr-x. Dossier public (propriétaire écrit, tout le monde lit et entre).
  • 644 = rw-r--r--. Fichier public (propriétaire écrit, tout le monde lit).
  • 600 = rw-------. Fichier privé (propriétaire seul, personne d'autre).
  • 700 = rwx------. Dossier privé (clés SSH, dossier ~/.ssh).
  • 750 = rwxr-x---. Dossier accessible au groupe, pas aux autres.

chmod : changer les permissions

Deux syntaxes équivalentes, la notation octale et la notation symbolique :

# Notation octale (recommandée, sans ambiguïté)
chmod 644 index.php
chmod 755 wp-content
chmod 600 wp-config.php

# Notation symbolique
chmod u+x script.sh          # ajoute x au propriétaire (user)
chmod g-w fichier.txt        # retire w au groupe
chmod o-rwx prive.txt        # retire tout aux autres
chmod a+r public.txt         # ajoute r à tout le monde (all)

Récursivité avec -R

L'option -R applique le chmod à un dossier et tout ce qu'il contient. Attention : si vous appliquez chmod -R 755 sur un site, vous allez aussi passer les fichiers en 755 (exécutables pour tout le monde). Ce qui n'est pas ce que vous voulez.

# ❌ À éviter : donne x aux fichiers aussi
chmod -R 755 ./mon-site

# ✅ Traitement séparé fichiers / dossiers (voir plus bas)

chown : changer le propriétaire

Sur un VPS avec sudo, vous changez propriétaire et groupe librement :

sudo chown www-data:www-data /var/www/site
sudo chown -R user:user /home/user/scripts

Sur un hébergement Plesk chrooté, la situation est différente :

chown limité au user dans le chroot
Vous pouvez changer le groupe de vos fichiers (souvent psacln pour la lecture par Apache, psaserv pour les configs Plesk), mais pas transférer la propriété à un autre utilisateur Linux. Si vous avez besoin d'un propriétaire spécifique, ouvrez un ticket Datacampus.
# Changer le groupe sur un fichier (sans sudo, autorisé en chroot)
chown :psacln fichier.php

# Syntaxe user:group
chown votre_user:psacln wp-config.php

Permissions recommandées pour WordPress

La configuration standard qui fonctionne partout et reste sûre :

CiblePermissionPourquoi
Tous les dossiers755Apache entre et lit, vous écrivez
Tous les fichiers644Apache lit, vous écrivez
wp-config.php600 ou 640Contient le mot de passe MySQL et les clés de salage
.htaccess644Apache doit le lire
wp-content/uploads755WordPress doit pouvoir y écrire

Cas concret : réappliquer proprement avec find

Si vous avez fait un gros upload et que les permissions sont en vrac (tout en 777 par exemple), voici la recette propre qui distingue fichiers et dossiers :

# Se placer à la racine du site
cd /httpdocs

# Tous les dossiers en 755
find . -type d -exec chmod 755 {} \;

# Tous les fichiers en 644
find . -type f -exec chmod 644 {} \;

# Verrouiller wp-config.php
chmod 600 wp-config.php

Pour PrestaShop, même logique avec quelques exceptions : config/, cache/, log/, img/, download/, upload/ et modules/ doivent rester accessibles en écriture par PHP (755 dossiers + 644 fichiers suffit sur nos infra, pas besoin de 777).

🔥
777, jamais
Si un tuto vous demande de passer un dossier en 777, c'est presque toujours un contournement d'un vrai problème (mauvais propriétaire, mauvais groupe). 777 veut dire « tout le monde peut tout faire », y compris écrire des scripts malveillants. Sur nos infra PHP-FPM tourne avec votre utilisateur, donc 755/644 suffit toujours.

Vérifier rapidement

# Afficher les permissions en octal (utile pour comparer)
stat -c '%a %n' wp-config.php
# → 600 wp-config.php

# Tous les fichiers avec des permissions dangereuses
find . -type f -perm /o+w

# Tous les dossiers sans x pour le propriétaire (inaccessibles)
find . -type d ! -perm -u+x

Permissions spéciales : umask

Quand vous créez un fichier, il hérite des permissions par défaut définies par le umask. Sur nos hébergements, le umask est 022, ce qui donne automatiquement 644 aux nouveaux fichiers et 755 aux nouveaux dossiers. C'est la bonne valeur pour la plupart des cas. Pour afficher le vôtre :

umask
# → 0022

Vous n'avez normalement jamais à le modifier. Si vous observez des fichiers créés en 664 ou 666 sans raison, c'est souvent qu'un umask custom a été posé dans un .bashrc ou un script. Vérifiez là en priorité.

Pour aller plus loin

Besoin d'aide ?

Cette documentation ne couvre pas votre cas ? Notre support humain est là.