Comprendre les permissions Linux
Les permissions Linux décident qui peut lire, modifier ou exécuter un fichier. La plupart des incidents applicatifs viennent d'un réglage trop permissif ou trop restrictif : un site qui ne peut pas écrire dans son dossier d'uploads, ou un fichier de configuration lisible par tous.
Lire les permissions
ls -l /var/www/site/index.php
stat /var/www/site/index.php
namei -l /var/www/site/index.phpUne ligne typique :
-rw-r--r-- 1 www-data www-data 1024 Nov 7 10:00 index.phpLe premier caractère est le type (- fichier, d dossier, l lien). Les neuf suivants forment trois groupes de trois : propriétaire, groupe, autres. rw- signifie lecture et écriture sans exécution. namei -l affiche les permissions de chaque dossier du chemin, ce qui révèle souvent le vrai blocage.
| Octal | Droits | Usage courant |
|---|---|---|
755 |
rwxr-xr-x |
dossier, exécutable |
644 |
rw-r--r-- |
fichier web statique |
600 |
rw------- |
secret, clé privée |
700 |
rwx------ |
dossier privé |
640 |
rw-r----- |
fichier lisible par le groupe |
775 |
rwxrwxr-x |
dossier partagé par un groupe |
Les chiffres s'additionnent : lecture 4, écriture 2, exécution 1. Sur un dossier, l'exécution signifie « traverser » : sans elle, impossible d'accéder aux fichiers qu'il contient, même s'ils sont lisibles.
Modifier
sudo chmod 644 fichier.conf
sudo chmod 755 /var/www/site
sudo chmod u+x script.sh
sudo chmod g-w,o-rwx donnees.txt
sudo chown utilisateur:groupe fichier
sudo chgrp www-data fichierPour une arborescence web, traitez séparément dossiers et fichiers :
sudo find /var/www/site -type d -exec chmod 755 {} +
sudo find /var/www/site -type f -exec chmod 644 {} +Un chmod -R 755 appliqué aux fichiers rend exécutables des images et des scripts inutiles. Un chmod -R mal ciblé peut aussi retirer le droit d'exécution des dossiers et casser le site.
chown -R suit les liens symboliques de façon surprenante selon les versions : utilisez -h pour agir sur le lien lui-même quand c'est nécessaire.
umask et permissions par défaut
umask définit les droits retirés aux nouveaux fichiers et dossiers :
umask
umask -SUn umask 022 donne 755 aux dossiers et 644 aux fichiers. Un umask 027 donne 750 et 640, plus restrictif. Pour un service, définissez l'umask dans son unité systemd (UMask=0027) plutôt que de compter sur le shell.
Cas particuliers et pièges
setuid(4000) fait exécuter un programme avec les droits de son propriétaire ; à éviter sauf outil système prévu.setgid(2000) sur un dossier fait hériter le groupe aux nouveaux fichiers.- Le sticky bit (
1000) sur/tmp(1777) empêche de supprimer les fichiers des autres. - Les ACL (
getfacl,setfacl) ajoutent des droits fins sans changer le propriétaire.
Pourquoi éviter chmod 777 : tout utilisateur, y compris un processus compromis, peut modifier ou remplacer le fichier. Sur un site web, cela permet à une faille d'installer un shell persistant. Le serveur web a besoin de lire, pas d'écrire partout ; seul le dossier d'uploads ou de cache doit être inscriptible, et de préférence par un utilisateur dédié.
Vérifier
stat -c '%a %U:%G %n' fichier
namei -l /var/www/site/index.php
sudo -u www-data test -r /var/www/site/index.php && echo lisiblePublicité
Cet article vous a-t-il aidé ?
À lire aussi
- Désactiver les services inutilesInventorier ce qui tourne, désactiver sans casser SSH ni le réseau et vérifier après redémarrage.
- Gérer les utilisateurs et groupes LinuxCréer un compte, l'ajouter au bon groupe, gérer les comptes de service et auditer les accès.
- Lister les ports ouverts sur un VPSDistinguer un service en écoute d'un port réellement joignable, puis fermer ce qui est inutile.