Utilisateurs, groupes et permissions
Comprendre rwx, chmod et chown pour de bon, et régler les erreurs de permission au lieu de tout passer en 777.
« Permission denied » est l'erreur la plus fréquente de l'administration Linux, et 777 en est la pire réponse : elle donne à tout le monde le droit d'écrire, y compris à un visiteur qui aurait trouvé une faille dans votre site. Comprendre le modèle prend dix minutes et sert pour toujours.
Lire une ligne de ls -l
ls -l /var/www
-rw-r--r-- 1 www-data www-data 4096 Aug 24 10:12 index.htmlLe premier caractère dit le type (- fichier, d dossier, l lien). Les neuf suivants se lisent par groupes de trois : d'abord le propriétaire, puis le groupe, puis tous les autres. Ici le propriétaire peut lire et écrire, le groupe et les autres peuvent seulement lire.
| Lettre | Sur un fichier | Sur un dossier |
|---|---|---|
| r (4) | Lire le contenu | Lister ce qu'il contient |
| w (2) | Modifier le contenu | Créer et supprimer des fichiers dedans |
| x (1) | Exécuter le fichier | Entrer dans le dossier |
Le x d'un dossier
Sans x sur un dossier, on ne peut pas le traverser — même avec r. C'est pour cela qu'un dossier se met en 755 et un fichier en 644 : le dossier a besoin d'être traversé, le fichier n'a pas besoin d'être exécuté.
Les valeurs à retenir
| Valeur | Signification | Pour quoi |
|---|---|---|
| 644 | Propriétaire écrit, les autres lisent | Fichiers d'un site |
| 755 | Propriétaire écrit, les autres lisent et traversent | Dossiers, scripts |
| 600 | Le propriétaire seul, en lecture et écriture | Clés SSH, fichiers .env |
| 700 | Le propriétaire seul, tout compris | Dossier ~/.ssh |
| 777 | Tout le monde peut tout faire | Jamais, sur un serveur |
Changer propriétaire et droits
sudo chown -R www-data:www-data /var/www/mon-site
sudo find /var/www/mon-site -type d -exec chmod 755 {} \;
sudo find /var/www/mon-site -type f -exec chmod 644 {} \;Ces deux find sont la bonne façon de remettre un site d'aplomb : les dossiers en 755, les fichiers en 644, sans avoir à trier à la main.
Travailler à plusieurs sur les mêmes fichiers
Plutôt que de tout donner à www-data, mettez votre utilisateur dans son groupe : vous éditez, le serveur web lit.
sudo usermod -aG www-data alexis
sudo chown -R alexis:www-data /var/www/mon-site
sudo chmod -R g+rX /var/www/mon-site
# Se déconnecter et se reconnecter pour que le nouveau groupe s'appliqueLe groupe ne s'applique qu'à la prochaine session
Après un usermod -aG, votre session en cours ne connaît pas le nouveau groupe. Déconnectez-vous et reconnectez-vous, sinon vous conclurez à tort que la commande n'a rien fait.
sudo, sans donner les clés de la maison
On peut n'autoriser qu'une commande précise. Éditez toujours avec visudo, qui refuse d'enregistrer un fichier invalide — une erreur de syntaxe dans sudoers vous prive de sudo, et il faut la console de secours pour s'en sortir.
sudo visudo
alexis ALL=(ALL) NOPASSWD: /bin/systemctl restart mon-appliBloqué malgré tout ? Ouvrez un ticket : on répond en français, et on regarde votre machine si besoin.
Ouvrir un ticket