Comprendre et gérer les permissions de fichiers sous Linux
Un simple chmod 777 peut ouvrir une faille béante. Voici comment vraiment comprendre les permissions Linux — rwx, propriétaire, groupe — pour sécuriser vos fichiers sans tâtonner.
Lire les permissions Linux avec ls -l
Les permissions Linux déterminent quels utilisateurs peuvent lire, modifier ou exécuter un fichier. Elles contrôlent également l’accès aux dossiers de votre VPS.
Pour afficher les droits d’un fichier :
ls -l fichier.txt
Vous obtenez une ligne semblable à celle-ci :
-rwxr-xr-- 1 alice developpeurs 2048 29 juil. 14:30 script.sh
La première partie représente les permissions :
-rwxr-xr--
Elle se décompose ainsi :
- rwx r-x r--
│ │ │ └── autres utilisateurs
│ │ └─────── groupe propriétaire
│ └──────────── utilisateur propriétaire
└──────────────── type de fichier
Le premier caractère indique le type :
| Caractère | Type |
|---|---|
- | Fichier classique |
d | Dossier |
l | Lien symbolique |
c | Périphérique de caractères |
b | Périphérique de blocs |
Dans notre exemple :
-rwxr-xr--
le propriétaire peut lire, modifier et exécuter le fichier. Les membres du groupe peuvent le lire et l’exécuter. Les autres utilisateurs peuvent uniquement le lire.
La commande suivante affiche les fichiers cachés et les droits du dossier courant :
ls -la
Pour connaître les permissions de chaque élément d’un chemin :
namei -l /var/www/mon-site/index.html
Cette commande est utile lorsqu’un service rencontre une erreur Permission denied malgré des droits apparemment corrects sur le fichier final.
Comprendre utilisateur, groupe et autres
Chaque fichier Linux possède généralement :
- un utilisateur propriétaire ;
- un groupe propriétaire ;
- des droits pour les autres utilisateurs.
Dans cette ligne :
-rw-r----- 1 alice developpeurs 1024 29 juil. config.ini
le propriétaire est :
alice
et le groupe est :
developpeurs
Les permissions sont réparties ainsi :
| Catégorie | Symbole | Personnes concernées |
|---|---|---|
| Utilisateur | u | Propriétaire du fichier |
| Groupe | g | Membres du groupe propriétaire |
| Autres | o | Tous les autres utilisateurs |
| Tous | a | Utilisateur, groupe et autres |
Linux examine d’abord si le processus appartient au propriétaire. Sinon, il vérifie s’il appartient au groupe concerné. Dans les autres cas, il applique les droits du dernier bloc.
Le compte root dispose de privilèges très élevés, mais cela ne justifie pas de lancer toutes les applications avec ce compte. Une application compromise exécutée comme root peut affecter tout le système.
Appliquez le principe du moindre privilège : chaque utilisateur et chaque service doivent recevoir uniquement les droits nécessaires à leur fonctionnement.
Comprendre rwx pour les fichiers et les dossiers
Les lettres r, w et x n’ont pas exactement le même effet sur un fichier et sur un dossier.
| Permission | Sur un fichier | Sur un dossier |
|---|---|---|
r — read | Lire le contenu | Lister les noms présents |
w — write | Modifier le contenu | Créer, supprimer ou renommer des éléments |
x — execute | Exécuter le fichier | Traverser et accéder aux éléments |
- | Droit absent | Droit absent |
Pour un script :
-rwxr-xr-x
le droit x permet son exécution :
./script.sh
Pour un dossier, le droit x permet de le traverser :
cd /var/www/mon-site
Un utilisateur peut parfois connaître le nom d’un fichier sans pouvoir y accéder si le dossier parent ne possède pas le droit d’exécution approprié.
Exemple :
drw-r--r--
Ce dossier possède des droits de lecture, mais aucun droit x. Son contenu peut devenir difficile ou impossible à consulter correctement.
Pour un dossier partagé en lecture, une configuration comme celle-ci est plus cohérente :
drwxr-xr-x
Comprendre la notation octale
Les permissions peuvent être représentées par des chiffres :
r = 4
w = 2
x = 1
Vous additionnez les valeurs pour chaque catégorie.
| Valeur | Permissions | Signification |
|---|---|---|
0 | --- | Aucun droit |
1 | --x | Exécution uniquement |
2 | -w- | Écriture uniquement |
3 | -wx | Écriture et exécution |
4 | r-- | Lecture uniquement |
5 | r-x | Lecture et exécution |
6 | rw- | Lecture et écriture |
7 | rwx | Lecture, écriture et exécution |
La permission :
rwxr-xr-x
devient :
755
car :
Utilisateur : rwx = 4 + 2 + 1 = 7
Groupe : r-x = 4 + 0 + 1 = 5
Autres : r-x = 4 + 0 + 1 = 5
Autre exemple :
rw-r--r--
correspond à :
644
Cette notation est fréquemment utilisée avec chmod.
Modifier les permissions avec chmod
La commande chmod modifie les droits d’un fichier ou d’un dossier.
Utiliser la notation symbolique
Ajouter le droit d’exécution au propriétaire :
chmod u+x script.sh
Retirer l’écriture au groupe et aux autres :
chmod go-w fichier.txt
Ajouter la lecture à tous :
chmod a+r document.txt
Définir exactement les droits du propriétaire :
chmod u=rw fichier.txt
Vous pouvez combiner plusieurs opérations :
chmod u+x,g-w,o-r script.sh
Utiliser la notation octale
Pour un fichier classique accessible en lecture :
chmod 644 fichier.txt
Pour un script exécutable :
chmod 755 script.sh
Pour un fichier contenant un secret :
chmod 600 .env
Pour un dossier privé :
chmod 700 ~/.ssh
Modifier récursivement avec -R
La commande suivante applique les droits à tout un dossier :
chmod -R 755 /var/www/mon-site
Elle est souvent utilisée trop rapidement. Elle rend aussi les fichiers ordinaires exécutables, ce qui n’est généralement pas nécessaire.
Préférez des droits différents pour les dossiers et les fichiers :
find /var/www/mon-site \
-type d \
-exec chmod 755 {} \;
find /var/www/mon-site \
-type f \
-exec chmod 644 {} \;
Utilisez
chmod -Ravec prudence. Une mauvaise commande récursive peut modifier des milliers de fichiers et empêcher une application ou SSH de fonctionner.
Changer le propriétaire avec chown et chgrp
chmod modifie les droits. chown modifie le propriétaire et éventuellement le groupe.
Changer le propriétaire :
sudo chown alice fichier.txt
Changer le propriétaire et le groupe :
sudo chown alice:developpeurs fichier.txt
Changer uniquement le groupe avec chown :
sudo chown :developpeurs fichier.txt
Ou avec chgrp :
sudo chgrp developpeurs fichier.txt
Pour modifier récursivement un projet :
sudo chown -R alice:developpeurs /home/alice/mon-projet
Avant d’utiliser -R, vérifiez soigneusement le chemin :
ls -ld /home/alice/mon-projet
Pour un site Nginx, le propriétaire dépend de votre méthode de déploiement. Vous pouvez conserver les fichiers sous votre compte, avec un groupe lisible par le serveur web :
sudo chown -R alice:www-data /var/www/mon-site
Pour une application exécutée par un service systemd dédié :
sudo chown -R monapp:monapp /opt/mon-app
N’attribuez pas automatiquement tous les fichiers à www-data. Le serveur web doit uniquement posséder les accès nécessaires.
Le guide pour transférer des fichiers vers un VPS explique comment déposer les fichiers dans votre dossier personnel avant de les déplacer vers leur destination finale.
Utiliser des valeurs sûres et éviter chmod 777
Voici des valeurs courantes, à adapter au contexte :
| Permission | Usage fréquent |
|---|---|
755 | Dossiers publics et scripts exécutables |
750 | Dossiers accessibles au propriétaire et au groupe |
700 | Dossiers privés comme .ssh |
644 | Fichiers publics non exécutables |
640 | Configurations lisibles par un groupe |
600 | Secrets, fichiers .env, clés privées |
400 | Secret en lecture seule pour le propriétaire |
Les clés SSH privées doivent être strictement protégées :
chmod 600 ~/.ssh/id_ed25519
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Un fichier .env contenant un token ou un mot de passe :
chmod 600 /etc/mon-app/mon-app.env
N’utilisez jamais
chmod 777comme solution générique à une erreur de permissions.
La valeur 777 signifie :
rwxrwxrwx
Le propriétaire, le groupe et tous les autres utilisateurs peuvent lire, modifier et exécuter l’élément.
Sur un dossier, cela peut permettre à d’autres comptes ou processus de créer, remplacer ou supprimer des fichiers. Sur un serveur multi-utilisateur ou après la compromission d’un service, ce droit facilite les modifications non autorisées.
Si une application réclame 777, recherchez plutôt :
- quel utilisateur exécute réellement le service ;
- quel groupe doit accéder aux fichiers ;
- quels dossiers doivent être modifiables ;
- quels fichiers doivent rester en lecture seule ;
- si le propriétaire est incorrect.
Utilisez ensuite chown, chgrp et des droits ciblés.
Pour une analyse complète des comptes, services et accès, consultez le guide pour sécuriser votre serveur Linux.
En résumé
- Les permissions Linux utilisent trois blocs : utilisateur, groupe et autres.
rautorise la lecture,wl’écriture etxl’exécution ou la traversée d’un dossier.- Consultez les droits avec
ls -louls -la. - La notation octale utilise
4pour lire,2pour écrire et1pour exécuter. 755correspond àrwxr-xr-x.644correspond àrw-r--r--.- Utilisez
chmodpour modifier les droits. - Utilisez
chownouchgrppour changer le propriétaire ou le groupe. - Appliquez
chmod -Runiquement après avoir vérifié précisément le chemin et l’effet attendu. - Utilisez généralement
755pour les dossiers publics et644pour les fichiers ordinaires. - Protégez les secrets avec
600et les dossiers privés avec700. - N’utilisez jamais
chmod 777comme correction rapide. - Appliquez toujours le principe du moindre privilège.
- Pour gérer vos permissions Linux sur un VPS hébergé en France avec stockage NVMe, Anti-DDoS L3/L4/L7 inclus, panel de gestion et support francophone, découvrez les offres VPS TalCloud.