Skip to content
Gestion des permissions Linux avec les commandes chmod et chown

Gestion des permissions Linux avec les commandes chmod et chown

CE QU’IL FAUT RETENIR

La gestion des permissions Linux avec chmod et chown repose sur le contrôle rigoureux du propriétaire, du groupe et des droits d’accès (lecture, écriture, exécution) affectés à chaque fichier ou répertoire. Utiliser le principe du moindre privilège garantit la sécurité globale de vos systèmes et de vos services web.

  • La commande chmod modifie les droits d’accès selon un mode octal (ex. 644 pour un fichier standard, 755 pour un dossier) ou symbolique.
  • La commande chown définit l’utilisateur et le groupe propriétaires (ex. chown www-data:www-data pour un serveur web).
  • L’option -R applique les changements de façon récursive, mais doit être manipulée avec précaution pour éviter d’accorder par erreur un mode 777 proscrit en production.

Le réglage du masque d’utilisateur umask conditionne les droits attribués par défaut lors de la création de tout nouveau fichier.

Comment fonctionne la gestion des permissions Linux avec chmod et chown ?

Chaque fichier et répertoire sous Linux est associé à un jeu précis d’attributs de sécurité et de propriétaires. Le contrôle d’accès aux fichiers est directement géré par le noyau Linux et son architecture de sous-systèmes pour interdire toute action non autorisée.

La gestion des permissions Linux avec chmod et chown permet d’isoler les environnements utilisateurs et de protéger le système contre les élévations de privilèges. D’après l’Agence nationale de la sécurité des systèmes d’information (ANSSI), restreindre les droits d’écriture sur les binaires exécutables constitue la première ligne de défense d’un serveur d’entreprise.

Les trois catégories d’utilisateurs : Propriétaire, Groupe, Autres

Le système Linux distingue trois niveaux de responsabilité pour l’attribution des droits. Chaque ressource possède un utilisateur propriétaire unique et un groupe propriétaire attribué lors de sa création.

  • u (User) : l’utilisateur propriétaire du fichier ou du répertoire.
  • g (Group) : les membres du groupe auquel appartient le fichier.
  • o (Others) : l’ensemble des autres utilisateurs du système, parfois appelés le reste du monde.
  • a (All) : la combinaison simultanée des trois catégories précédentes.

Les trois types de permissions : Lecture (r), Écriture (w), Exécution (x)

Les droits d’accès définissent précisément quelles actions sont autorisées sur une ressource. Leur portée varie légèrement selon qu’il s’agit d’un fichier simple ou d’un dossier.

Permission Symbole Action sur un fichier Action sur un répertoire
Lecture r Afficher le contenu du fichier Lister les fichiers contenus
Écriture w Modifier ou supprimer le fichier Créer ou effacer des fichiers
Exécution x Lancer le fichier comme programme Traverser ou entrer dans le dossier

Afficher et lire les permissions avec la commande ls -l

L’utilisation du terminal nécessite d’analyser rapidement la chaîne de 10 caractères renvoyée par la commande ls -l. Le premier caractère indique la nature de la ressource (un tiret pour un fichier, la lettre d pour un répertoire).

Les 9 caractères suivants se décomposent en trois triplets représentant respectivement les droits du propriétaire, du groupe et des autres utilisateurs. Par exemple, la chaîne -rw-r–r– indique que le propriétaire possède la lecture et l’écriture, tandis que le groupe et les autres ne disposent que de la lecture seule.

  • Position 1 : type de fichier (, d, l).
  • Positions 2 à 4 : droits du propriétaire (u).
  • Positions 5 à 7 : droits du groupe (g).
  • Positions 8 à 10 : droits des autres utilisateurs (o).

Comment utiliser la commande chmod pour modifier les permissions ?

La commande chmod (change mode) modifie les droits d’accès d’un fichier ou d’un répertoire sous Linux. Elle s’utilise selon deux approches : la syntaxe symbolique basée sur des lettres ou la syntaxe octale basée sur des valeurs numériques.

Chaque méthode répond à des besoins spécifiques d’administration. La notation symbolique est privilégiée pour ajouter ou retirer un droit ciblé, tandis que la notation octale permet de définir l’ensemble de la matrice de droits en une seule commande.

La notation symbolique (u, g, o, a)

La méthode symbolique associe des lettres de catégorie avec des opérateurs d’action pour ajuster les droits. Elle évite d’avoir à recalculer la totalité des permissions existantes.

Catégorie Opérateur Permission Exemple de commande
u / g / o / a + (ajouter) r / w / x chmod u+x script.sh
u / g / o / a (retirer) r / w / x chmod g-w document.txt
u / g / o / a = (définir) r / w / x chmod o=r rapport.pdf

La notation octale et binaire (4, 2, 1)

La notation octale repose sur l’attribution d’une valeur numérique fixe à chaque type de droit. En additionnant ces valeurs pour chaque catégorie d’utilisateur, on obtient un nombre à 3 chiffres compris entre 0 et 7.

Droit Valeur octale Représentation binaire Signification
Aucun droit 0 000 Accès totalement interdit
Exécution (x) 1 001 Droit d’exécution seul
Écriture (w) 2 010 Droit d’écriture seul
Lecture (r) 4 100 Droit de lecture seul

Les combinaisons de permissions les plus courantes (644, 755, 700, 777)

Certains motifs de permissions reviennent systématiquement dans l’administration quotidienne de Linux. L’utilisation d’attributs de fichiers Linux adaptés empêche la corruption de données critiques par des processus non autorisés.

Code octal Format symbolique Usage recommandé
644 rw-r–r– Fichiers standards (documents, pages HTML)
755 rwxr-xr-x Répertoires publics et scripts exécutables
700 rwx—— Répertoires confidentiels du propriétaire
600 rw——- Clés SSH privées et fichiers de mots de passe

Comment utiliser la commande chown pour modifier les propriétaires ?

La commande chown (change owner) permet d’attribuer la propriété d’une ressource à un autre utilisateur ou groupe de sécurité du système. Seul l’utilisateur racine (root) ou un utilisateur disposant des droits attribués via la commande sudo peut transférer la propriété d’un fichier.

Elle s’avère indispensable lors du déploiement de services web ou de la restauration de sauvegardes système. Assigner les bons comptes applicatifs garantit le bon fonctionnement des services sans compromettre l’isolation système.

Changer le propriétaire d’un fichier ou dossier

Pour modifier uniquement l’utilisateur propriétaire d’une ressource, indiquez simplement le nom du compte cible suivi du chemin du fichier. Par exemple, la commande chown alice document.pdf transfère la propriété du fichier à l’utilisateur alice sans modifier son groupe rattaché.

Si l’utilisateur n’existe pas dans le fichier d’identification du système /etc/passwd, le terminal renverra une erreur d’utilisateur invalide. Assurez-vous au préalable du nom exact du compte destinataire.

Modifier le propriétaire et le groupe en une commande (chown user:group)

Il est très fréquent de modifier simultanément l’utilisateur et le groupe associés à un répertoire de travail. On utilise pour cela le symbole deux-points entre le nom d’utilisateur et le nom du groupe.

  • chown www-data:www-data /var/www/html : assigne le dossier web à l’utilisateur et au groupe du serveur HTTP.
  • chown alice: /home/alice/fichier : attribue le fichier à alice et bascule automatiquement le groupe sur le groupe primaire d’alice.
  • chown :developpeurs projet.tar : modifie le groupe propriétaire sans altérer l’utilisateur courant.

La commande chgrp : modifier le groupe uniquement

Bien que chown permette de traiter le groupe, la commande chgrp est spécialement dédiée au changement de groupe propriétaire. Sa syntaxe directe chgrp developpeurs document.txt simplifie les scripts d’administration automatisés.

Contrairement au changement de propriétaire restreint à root, un utilisateur standard peut utiliser chgrp pour céder un fichier à un autre groupe dont il est lui-même membre effectif.

Comment appliquer des permissions récursives avec l’option -R ?

L’option -R (majuscule) applique les directives de chmod ou chown de manière récursive à l’ensemble des sous-dossiers et fichiers contenus dans une arborescence. C’est un outil très puissant mais qui exige une grande prudence.

Lancer par inadvertance une commande récursive mal formulée au niveau de la racine du système peut bloquer le démarrage de votre distribution. Dans une stratégie globale de durcissement système et de sécurisation des serveurs, la récursivité aveugle est proscrite.

  • Appliquer des droits récursifs sur des fichiers : find /chemin -type f -exec chmod 644 {} +
  • Appliquer des droits récursifs sur des répertoires : find /chemin -type d -exec chmod 755 {} +
  • Changer le propriétaire de toute une arborescence : chown -R utilisateur:groupe /dossier

Quels sont les permissions avancées et les droits spéciaux sous Linux ?

Les trois droits basiques sont parfois insuffisants pour gérer des cas d’usage complexes sur des systèmes multi-utilisateurs. Linux intègre des attributs complémentaires pour gérer les permissions par défaut et accorder des privilèges temporaires sécurisés.

La sécurité fichiers Linux octal intègre ainsi un quatrième chiffre placé au début du code à trois chiffres traditionnel. Ce chiffre gère les bits SUID, SGID et Sticky Bit.

Le masque d’utilisateur (umask)

Le masque d’utilisateur umask contrôle les permissions attribuées automatiquement aux nouveaux fichiers et dossiers créés sur le système. Il agit comme un filtre en retirant des droits à la valeur maximale autorisée (666 pour les fichiers, 777 pour les dossiers).

Un masque classique réglé sur 022 produit ainsi des répertoires en mode 755 et des fichiers en mode 644. Pour renforcer la confidentialité sur une station de travail, un masque de 077 garantit que vous seul aurez l’accès aux nouveaux documents créés.

SUID, SGID et Sticky Bit

Ces trois attributs spéciaux modifient profondément l’exécution des programmes et le comportement des dossiers partagés.

Droit spécial Valeur octale Effet sur la ressource Exemple classique
SUID 4000 Exécute le fichier avec les droits du propriétaire Commande passwd (4755)
SGID 2000 Hérite du groupe du dossier pour les nouveaux fichiers Dossier de travail collaboratif (2770)
Sticky Bit 1000 Empêche la suppression de fichiers par non-propriétaires Répertoire temporaire /tmp (1777)

Quels sont les cas pratiques et exemples d’utilisation au quotidien ?

La maîtrise théorique doit se traduire par des pratiques concrètes pour administrer vos services sans vulnérabilité. Qu’il s’agisse de scripts personnels ou de serveurs applicatifs, les modèles de droits appliqués diffèrent.

Bien que la configuration des permissions protège l’accès logique en session, la protection physique globale de votre stockage repose sur un chiffrement de disque efficace tel que LUKS sous Linux.

Rendre un script shell exécutable

Par défaut, un nouveau fichier texte contenant du code shell possède la permission 644. Si vous tentez de le lancer dans votre console avec la commande ./script.sh, le système renverra immédiatement une erreur d’accès refusé.

Pour autoriser l’exécution tout en protégeant le code en écriture pour les tiers, utilisez la commande symbolique chmod u+x script.sh ou la valeur octale 755. Vous pouvez ensuite exécuter directement votre script dans le terminal.

Sécuriser les fichiers d’un CMS ou serveur web (WordPress)

Un serveur web public comme Nginx ou Apache exige une configuration stricte pour empêcher le dépôt et l’exécution de webshells malveillants par des attaquants.

  • Attribuer la propriété des répertoires au compte web : chown -R www-data:www-data /var/www/html
  • Restreindre les dossiers en écriture propriétaire : find /var/www/html -type d -exec chmod 755 {} +
  • Verrouiller tous les fichiers du CMS : find /var/www/html -type f -exec chmod 644 {} +
  • Protéger le fichier de configuration sensible wp-config.php : chmod 600 /var/www/html/wp-config.php

Comment résoudre les erreurs de permissions et s’entraîner ?

Mettre en pratique la gestion des droits via des exercices guidés permet d’ancrer les bons réflexes sans risquer de corrompre un serveur de production.

La plupart des blocages rencontrés au quotidien dérivent d’un conflit entre l’identité de l’utilisateur actif et les attributs du répertoire cible.

Exercice : Configurer un dossier partagé entre utilisateurs

L’objectif de cet exercice est de créer un répertoire /projets/partage accessible en lecture et écriture uniquement par les membres du groupe devs.

  • Créer le groupe et le dossier : groupadd devs && mkdir -p /projets/partage
  • Assigner le groupe au dossier : chown :devs /projets/partage
  • Définir le droit d’accès et le bit SGID : chmod 2770 /projets/partage
  • Ajouter les utilisateurs au groupe : usermod -aG devs utilisateur1

Résoudre l’erreur “Permission denied”

Le message d’erreur “Permission denied” survient lorsque le noyau Linux bloque une requête de lecture, d’écriture ou d’exécution non autorisée. Voici les contrôles méthodologiques à effectuer pour résoudre le problème rapidement.

Constat / Erreur Cause probable Solution recommandée
Impossible de naviguer dans un dossier Manque du droit d’exécution (x) sur le dossier Lancer chmod +x dossier
Écriture refusée malgré le droit w sur le fichier Manque du droit d’écriture (w) sur le dossier parent Ajouter le droit w sur le dossier englobant
Opération non permise lors de l’exécution de chown L’utilisateur courant n’est pas root Précéder la commande de sudo