Quand on gère un serveur ou un site web, il est essentiel de comprendre comment fonctionnent les permissions sur les fichiers et les dossiers. En environnement Unix ou Linux, ces autorisations sont gérées à l’aide de commandes spécifiques. Parmi elles, chmod est l’une des plus fondamentales. Elle permet de contrôler qui peut lire, écrire ou exécuter un fichier ou un répertoire. Si vous débutez en administration système, ou si vous avez déjà rencontré des messages d’erreur comme « Permission denied« , il est probable que vous ayez besoin de modifier les droits d’accès. C’est ici qu’intervient la commande chmod, souvent perçue comme obscure, mais en réalité très logique une fois ses bases comprises. Explorons ensemble sa définition, son fonctionnement et les cas où elle s’applique concrètement.
Définir chmod : Une commande pour gérer les permissions sur un serveur Web
Le mot chmod est l’abréviation de « change mode« , et fait référence à la modification du mode d’accès d’un fichier ou d’un répertoire sur un système Unix ou Linux. Il s’agit d’une commande centrale dans l’administration système, notamment dans la gestion d’un serveur web où la sécurité, l’accessibilité et la bonne exécution des fichiers dépendent directement des permissions associées. Dans un environnement serveur, chaque fichier ou répertoire est encadré par un système de droits d’accès, défini par un triplet d’autorisations : lecture (r), écriture (w), exécution (x). Ces autorisations s’appliquent à trois niveaux distincts :
- Le propriétaire (u) : souvent l’utilisateur qui a créé le fichier ;
- Le groupe (g) : ensemble d’utilisateurs partageant des droits communs sur des fichiers ;
- Les autres (o) : tous les autres utilisateurs du système n’appartenant ni au groupe ni en tant que propriétaire.
Sur un serveur web, cette hiérarchie permet de contrôler finement :
- Quels fichiers peuvent être lus par le serveur web (comme Apache ou Nginx).
- Quels répertoires peuvent être parcourus pour accéder aux ressources (HTML, CSS, images).
- Quels scripts (PHP, bash, Python) peuvent être exécutés en toute sécurité.
Ainsi, le rôle de chmod
devient fondamental dans la gestion :
- Des répertoires
/var/www/
contenant les fichiers du site web. - Des fichiers sensibles de configuration (comme
.env
ouconfig.php
). - Des dossiers de stockage ou de cache devant autoriser l’écriture pour certains processus (comme
/tmp
ou/uploads
).
Un fichier PHP d’un site, par exemple, doit être lisible par le serveur web pour être interprété correctement. Mais il ne doit pas être modifiable par d’autres utilisateurs, afin d’éviter toute altération malveillante. C’est pourquoi les droits typiques seraient 644
: lecture/écriture pour le propriétaire, lecture seule pour le groupe et les autres. Inversement, un script d’installation temporaire peut nécessiter le droit d’exécution, que l’on attribuera en tapant :
chmod +x install.sh
La puissance de chmod réside dans sa souplesse. Il permet de :
- Révoquer des droits obsolètes ou excessifs (ex :
chmod o-r
) ; - Restreindre l’accès à des utilisateurs ou à des scripts automatisés ;
- Appliquer des règles spécifiques à grande échelle, via des boucles ou des scripts Bash.
Sur un plan pratique, cette commande est souvent utilisée en complément d’autres commandes liées à la gestion des fichiers, comme :
- ls -l : pour afficher les permissions actuelles en notation symbolique ;
- chown : pour modifier le propriétaire ou le groupe d’un fichier ;
- umask : pour définir des permissions par défaut à la création des fichiers.
Il est également fréquent d’utiliser chmod dans des environnements d’hébergement mutualisé ou de serveurs cloud (ex. : AWS, OVH, DigitalOcean) où la sécurité repose fortement sur l’isolation des fichiers utilisateurs. Des droits trop permissifs (comme 777
) peuvent ouvrir des failles exploitables par des scripts malveillants ou des utilisateurs tiers. Enfin, pour les développeurs déployant leurs sites via des outils comme Git ou via des scripts d’automatisation (CI/CD), l’usage de chmod est indispensable pour garantir que les fichiers arrivent avec les bonnes permissions sur l’environnement de production.
Autrement dit, chmod est un outil de sécurité, de configuration et de gouvernance dans tout environnement web digne de ce nom.
Comment fonctionne la commande chmod ?
Il existe deux manières principales d’utiliser chmod : la notation symbolique et la notation numérique.
L’utilisation en mode symbolique de la commande chmod
Le mode symbolique de la commande chmod est une méthode lisible et intuitive pour modifier les permissions d’un fichier ou d’un répertoire. Elle repose sur la combinaison de lettres représentant les types d’utilisateurs ciblés, les opérations à effectuer et les types de permissions à accorder ou retirer. Cette méthode est particulièrement utile dans les scripts, ou pour modifier rapidement un seul droit sans redéfinir l’ensemble des permissions.
Types d’utilisateurs ciblés :
- u : le propriétaire du fichier (user)
- g : le groupe associé au fichier (group)
- o : les autres utilisateurs (others)
- a : tous les types d’utilisateurs à la fois (all = u + g + o)
Opérateurs disponibles :
- + : ajoute une ou plusieurs permissions
- – : retire une ou plusieurs permissions
- = : définit les permissions spécifiées, en supprimant les autres existantes
Types de permissions :
- r : lecture (read)
- w : écriture (write)
- x : exécution (execute)
Grâce à cette notation, il est possible de modifier les droits de manière très fine. Voici quelques exemples d’utilisation :
chmod u+x script.sh # Donne le droit d’exécution au propriétaire
chmod g-w fichier.txt # Retire le droit d’écriture au groupe
chmod o=r fichier.conf # Donne uniquement le droit de lecture aux autres
chmod a+rx index.html # Ajoute lecture et exécution à tout le monde
chmod ug=rw config.ini # Définit lecture + écriture pour user et group (retire les autres droits)
Le mode symbolique permet également de combiner plusieurs opérations dans une seule commande, comme :
chmod u+x,g-w,o=r monfichier
Ceci ajoute l’exécution à l’utilisateur, retire l’écriture au groupe, et donne uniquement la lecture aux autres.
Tableau récapitulatif des commandes symboliques les plus courantes
Un tableau vaut parfois mille mots :
Commande chmod | Effet sur les permissions |
---|---|
chmod u+x fichier |
Ajoute le droit d’exécution au propriétaire du fichier |
chmod g-w fichier |
Retire le droit d’écriture au groupe |
chmod o=r fichier |
Donne uniquement le droit de lecture aux autres (supprime les autres droits) |
chmod a+x fichier |
Ajoute le droit d’exécution à tous les utilisateurs |
chmod ug=rw fichier |
Donne lecture et écriture à l’utilisateur et au groupe, supprime tous les autres droits |
chmod o-rwx fichier |
Supprime tous les droits aux autres utilisateurs |
chmod u=r fichier |
Autorise uniquement la lecture pour le propriétaire |
chmod a=rx script.sh |
Autorise lecture et exécution à tous, supprime l’écriture |
chmod g+rw dossier |
Ajoute lecture et écriture au groupe pour un dossier |
chmod a-rwx fichier |
Retire tous les droits pour tous les utilisateurs (fichier bloqué) |
Ce mode est particulièrement apprécié car il permet de modifier des droits sans avoir à recalculer la valeur octale complète. Il est aussi plus lisible pour les débutants, ou dans des scripts d’administration devant rester compréhensibles. Néanmoins, pour appliquer un ensemble de droits précis et cohérent d’un seul coup, la notation numérique reste plus rapide et systématique.
L’utilisation en mode octal (numérique) de la commande chmod
Le mode octal (ou numérique) de la commande chmod est une méthode concise et puissante pour définir en une seule opération les permissions d’un fichier ou d’un répertoire. Contrairement au mode symbolique qui modifie les droits par catégorie, le mode numérique permet de spécifier l’ensemble des droits à appliquer, sous la forme d’un nombre à trois chiffres.
Chaque type de permission se voit attribuer une valeur fixe :
- 4 : permission de lecture (read)
- 2 : permission d’écriture (write)
- 1 : permission d’exécution (execute)
Pour chaque catégorie d’utilisateur — propriétaire, groupe, autres — on additionne les valeurs des permissions souhaitées, ce qui donne un nombre compris entre 0 et 7.
Par exemple :
chmod 755 monscript.sh
Cela signifie :
- 7 = 4 + 2 + 1 → lecture, écriture et exécution pour le propriétaire
- 5 = 4 + 0 + 1 → lecture et exécution pour le groupe
- 5 = 4 + 0 + 1 → lecture et exécution pour les autres
Ce système est rapide, efficace et parfaitement adapté aux scripts, à l’automatisation de tâches et à la standardisation des droits sur un serveur web.
Voici quelques valeurs classiques de commandes chmod et leurs usages typiques :
Commande chmod (octal) | Signification des permissions |
---|---|
chmod 777 fichier |
Tous les droits (lecture, écriture, exécution) pour tous les utilisateurs. À utiliser avec extrême prudence pour éviter les failles de sécurité. |
chmod 755 fichier |
Lecture, écriture, exécution pour le propriétaire ; lecture et exécution pour groupe et autres. Fréquent pour les scripts ou fichiers exécutables. |
chmod 700 fichier |
Tous les droits uniquement pour le propriétaire. Aucun accès pour les autres. Idéal pour des fichiers privés ou sensibles. |
chmod 644 fichier |
Lecture et écriture pour le propriétaire ; lecture seule pour groupe et autres. Configuration standard pour des fichiers HTML ou de configuration. |
chmod 600 fichier |
Lecture et écriture pour le propriétaire uniquement. Utile pour des fichiers de configuration contenant des données sensibles (ex : clés SSH). |
chmod 666 fichier |
Lecture et écriture pour tous les utilisateurs. Risqué sur un serveur, peut être utilisé temporairement pour du débogage ou dans un environnement contrôlé. |
chmod 444 fichier |
Lecture seule pour tout le monde. Empêche toute modification du fichier sans changer ses droits. |
chmod 711 dossier |
Accès complet pour le propriétaire ; seuls les autres peuvent entrer dans le dossier sans en voir le contenu (utile pour des scripts à exécuter mais à cacher). |
chmod 000 fichier |
Aucun droit pour personne. Le fichier est bloqué jusqu’à ce que ses permissions soient modifiées. Souvent utilisé pour interdire temporairement l’accès. |
Combinaisons supplémentaires pour répertoires avec chmod
Dans le cas des répertoires, le droit d’exécution (x) est crucial. Il permet de « pénétrer » dans le répertoire, c’est-à-dire d’en accéder au contenu. Sans ce droit, même si un utilisateur a le droit de lecture, il ne pourra pas lister les fichiers qu’il contient.
Exemples :
chmod 755 /var/www
: permet à tous de naviguer dans le répertoire et d’accéder aux fichiers, mais de ne modifier que ce que le propriétaire autorise.chmod 700 ~/backup
: répertoire privé pour sauvegardes, inaccessible aux autres utilisateurs.
Enfin, il est possible d’appliquer des permissions de manière récursive avec l’option -R
:
chmod -R 755 /var/www/html
Cela applique les mêmes droits à tous les fichiers et sous-dossiers contenus dans le chemin.
Quand utiliser chmod et pour quels types de fichiers ?
La commande chmod est indispensable dès lors que l’on manipule un système de fichiers sous Unix ou Linux, en local ou sur un serveur distant. Elle intervient chaque fois qu’il est nécessaire de régler les droits d’accès à des fichiers ou des répertoires pour des raisons de sécurité, de fonctionnalité ou d’organisation. L’usage de chmod
est particulièrement courant dans les situations suivantes :
- Les scripts shell, Python ou PHP : ils doivent disposer du droit d’exécution (
x
) pour pouvoir être lancés via la ligne de commande ou un cron job ; - Les fichiers web accessibles publiquement : Comme les fichiers
.html
,.css
,.js
ou.php
, qui doivent être lisibles par l’utilisateur système associé au serveur web (ex : www-data) ; - Les fichiers de configuration sensibles : tels que
.env
,wp-config.php
ouconfig.yml
, qui ne doivent être accessibles qu’au propriétaire pour éviter les fuites de données (mots de passe, clés API) ; - Les dossiers de cache, de log ou de téléchargement : comme
/var/log
ou/uploads
, qui nécessitent souvent des permissions d’écriture pour des processus systèmes ou des utilisateurs spécifiques ; - Les répertoires privés : Dans le cas d’un hébergement mutualisé ou multi-utilisateur, certains dossiers doivent être inaccessibles aux autres comptes (via
chmod 700
).
Exemples d’usages et de bonnes pratiques avec chmod
Le tableau de synthèse des usages courants :
Type de fichier ou dossier | Permission recommandée (et justification) |
---|---|
Fichier PHP d’un site web | chmod 644 : lecture/écriture pour le propriétaire, lecture pour les autres. Suffisant pour Apache/Nginx. |
Script shell à exécuter (ex. : deploy.sh ) |
chmod 755 : permet l’exécution tout en conservant un contrôle en écriture limité au propriétaire. |
Fichier de configuration sensible (.env , config.php ) |
chmod 600 : seuls le propriétaire peut lire et modifier, les autres n’ont aucun accès. |
Répertoire de téléchargement (/uploads , /media ) |
chmod 755 pour le dossier ; fichiers à l’intérieur généralement en 644 ou 664 . |
Répertoire personnel ou de sauvegarde | chmod 700 : garantit la confidentialité totale. |
Dossier de logs générés par un service | chmod 755 (dossier) + 644 (fichiers), sauf si des restrictions de confidentialité s’appliquent. |
Fichier temporairement inutilisable | chmod 000 : empêche toute lecture ou modification. Utile pour bloquer un fichier sans le supprimer. |
Les erreurs fréquentes à éviter avec la commande chmod
Une mauvaise utilisation de chmod
peut compromettre le bon fonctionnement d’un service ou exposer des données sensibles. Deux erreurs typiques à éviter :
- Donner tous les droits à tous :
chmod 777
rend un fichier vulnérable à des modifications ou exécutions non autorisées. Cela peut introduire des failles de sécurité ; - Verrouiller entièrement un fichier par erreur : un
chmod 000
appliqué par inadvertance empêchera même le propriétaire d’y accéder, jusqu’à ce que les droits soient restaurés.
Appliquer le principe du moindre privilège avec chmod
Pour une gestion saine des permissions, il est essentiel d’appliquer la règle dite du moindre privilège : Attribuer à chaque fichier ou dossier uniquement les permissions minimales nécessaires à son bon fonctionnement. Cela réduit la surface d’attaque potentielle sur le système et évite des erreurs de manipulation. Ainsi :
- Un fichier de configuration lu mais jamais modifié par un service ne devrait pas avoir de droit d’écriture ;
- Un script d’installation ne devrait avoir le droit d’exécution que le temps de l’installation ;
- Un répertoire d’uploads comme WordPress ne devrait être accessible en écriture qu’aux processus concernés, pas à tous les utilisateurs.
En respectant ces principes, chmod
devient un outil stratégique dans la sécurisation de votre serveur et dans le bon fonctionnement de vos applications web.
0 commentaires