Aller au contenu principal

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
Une nuance importante

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, d pour un dossier, l pour 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étaire
  • devs : 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.

Pourquoi éviter 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.

Une question ?

Notre équipe est disponible sur Discord pour vous accompagner.