SLBCloud
Intermédiaire9 min de lecture

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

bash
ls -l /var/www
-rw-r--r-- 1 www-data www-data 4096 Aug 24 10:12 index.html

Le 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.

LettreSur un fichierSur un dossier
r (4)Lire le contenuLister ce qu'il contient
w (2)Modifier le contenuCréer et supprimer des fichiers dedans
x (1)Exécuter le fichierEntrer 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

ValeurSignificationPour quoi
644Propriétaire écrit, les autres lisentFichiers d'un site
755Propriétaire écrit, les autres lisent et traversentDossiers, scripts
600Le propriétaire seul, en lecture et écritureClés SSH, fichiers .env
700Le propriétaire seul, tout comprisDossier ~/.ssh
777Tout le monde peut tout faireJamais, sur un serveur

Changer propriétaire et droits

bash
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.

bash
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'applique

Le 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

bash
alexis ALL=(ALL) NOPASSWD: /bin/systemctl restart mon-appli

Bloqué malgré tout ? Ouvrez un ticket : on répond en français, et on regarde votre machine si besoin.

Ouvrir un ticket