Comprendre les droits utilisateurs et groupes sous Linux
Linux est un système multi-utilisateur par nature. Tout élément du système, fichier, dossier ou processus, appartient à
un utilisateur et à un groupe. Comprendre ce fonctionnement permet de mieux saisir pourquoi chmod, chown et sudo
se comportent comme ils le font.
Les trois propriétaires d'un fichier
Chaque fichier ou dossier définit trois catégories de propriétaires :
- User (u) : le propriétaire du fichier
- Group (g) : le groupe associé
- Others (o) : tous les autres utilisateurs
Et pour chacune de ces catégories, trois permissions possibles :
- r (read) : lire le fichier, ou lister le contenu d'un dossier
- w (write) : modifier le fichier, ou créer/supprimer des fichiers dans le dossier
- x (execute) : exécuter le fichier s'il s'agit d'un script ou programme, ou traverser le dossier s'il s'agit d'un répertoire
Le "x" sur un dossier ne signifie pas "lancer" le dossier, cette notion n'existe pas. Il permet d'y accéder (via cd,
par exemple). Sans ce droit, le dossier reste visible mais inaccessible, même avec le droit de lecture.
Décoder une ligne de ls -l
La commande ls -l renvoie un résultat de ce type :
-rwxr-xr-- 1 john devs 4096 Jul 2 10:32 script.sh
Décomposition :
-: type de fichier (-pour un fichier standard,dpour un dossier,lpour un lien symbolique)rwx: droits du propriétaire (john peut lire, écrire, exécuter)r-x: droits du groupe (devs peut lire et exécuter, pas écrire)r--: droits des autres (lecture seule)john: le propriétairedevs: le groupe
Cette seule ligne indique précisément qui peut faire quoi sur le fichier.
La notation numérique (chmod 755, 644...)
Chaque permission correspond à une valeur :
- Lecture (r) = 4
- Écriture (w) = 2
- Exécution (x) = 1
Ces valeurs s'additionnent selon les droits souhaités. rwx correspond à 4+2+1 = 7, r-x à 4+1 = 5, r-- à 4.
Ainsi, chmod 755 signifie : propriétaire = 7 (rwx), groupe = 5 (r-x), autres = 5 (r-x). Et chmod 644 :
propriétaire = 6 (rw-), groupe = 4 (r--), autres = 4 (r--). Une fois cette logique comprise, il n'est plus nécessaire de
mémoriser les combinaisons par cœur.
chmod et chown en pratique
chmod modifie les permissions, chown modifie le propriétaire et/ou le groupe.
Cas fréquent : après un transfert de fichiers en SFTP, un dossier web se retrouve avec des permissions incorrectes et le site ne s'affiche plus normalement. La correction habituelle :
# Redonner les bonnes permissions à un dossier web
sudo chmod -R 755 /var/www/monsite
# Redonner le bon propriétaire (utilisateur du serveur web, par exemple www-data)
sudo chown -R www-data:www-data /var/www/monsite
L'option -R applique la modification récursivement à l'ensemble du contenu du dossier.
Les groupes, à quoi ça sert
Un groupe permet d'attribuer les mêmes droits à plusieurs utilisateurs sans gérer chaque permission individuellement.
Consulter les groupes d'un utilisateur :
groups john
# ou
id john
Ajouter un utilisateur à un groupe existant :
sudo usermod -aG devs john
Créer un nouveau groupe :
sudo groupadd devs
Cas pratique : plusieurs utilisateurs sur un même dossier
Imaginons un dossier de site web sur lequel plusieurs développeurs doivent pouvoir écrire. La solution rapide, mais
déconseillée, consiste à appliquer chmod 777.
chmod 777 accorde les droits complets (lecture, écriture, exécution) à l'ensemble des utilisateurs du système, y
compris à un processus compromis. Cette pratique règle le problème en apparence, mais expose le serveur à un risque de
sécurité important. C'est une solution fréquemment rencontrée en dépannage, qui masque en général un problème de
configuration des droits plus profond.
La méthode recommandée passe par un groupe partagé :
# Créer un groupe dédié
sudo groupadd webdevs
# Ajouter chaque utilisateur au groupe
sudo usermod -aG webdevs alice
sudo usermod -aG webdevs bob
# Appliquer le groupe et les droits au dossier
sudo chown -R :webdevs /var/www/monsite
sudo chmod -R 775 /var/www/monsite
Alice et bob peuvent alors écrire dans le dossier, tandis que le reste des utilisateurs conserve uniquement un accès en lecture. Cette approche reste sécurisée tout en évitant le recours au 777.
Le cas de root
Root outrepasse l'ensemble de ces permissions et peut lire, écrire ou exécuter n'importe quel fichier, indépendamment de sa configuration. C'est précisément pour cette raison qu'il est recommandé de ne pas travailler en root en permanence, une seule erreur suffit alors à impacter l'ensemble du système. Ce sujet est développé dans notre article Créer un utilisateur non-root.
En résumé
Ce système de permissions constitue la base de nombreuses manipulations courantes sur un serveur : création d'utilisateurs, transferts SFTP, sécurisation générale. Pour aller plus loin, consultez Créer un utilisateur non-root et notre guide de connexion SFTP.
Notre équipe est disponible sur Discord pour vous accompagner.