la commande chmod pour modifier les permissions

La commande chmod (abrégée de change mode) est l’une des bases essentielles de la gestion des systèmes Linux, car elle permet de contrôler la sécurité du système en gérant les permissions d’accès aux fichiers et dossiers. Depuis la création du système UNIX dans les années 1970, ce système de permissions est l’une des fonctionnalités qui le distinguent des autres systèmes d’exploitation, et il a été intégré au système Linux que nous connaissons aujourd’hui.

Imaginez votre système d’exploitation comme une forteresse sécurisée, où les fichiers et dossiers représentent les différentes pièces, et les permissions d’accès sont les clés qui permettent ou interdisent l’accès à ces pièces. C’est ici que la commande chmod intervient en tant qu’administrateur de sécurité, décidant qui peut entrer dans une pièce et quelles actions sont autorisées.

L’importance de comprendre chmod ne se limite pas aux administrateurs professionnels ; tout utilisateur Linux a besoin, à un moment donné, de modifier les permissions d’un fichier, que ce soit pour rendre un fichier texte exécutable, limiter l’accès aux fichiers sensibles ou partager un dossier avec d’autres utilisateurs sans compromettre la sécurité.

Dans ce guide complet, nous couvrirons tout ce que vous devez savoir sur la commande chmod, en commençant par les bases simples et en passant aux techniques avancées, en mettant l’accent sur ses applications pratiques et les meilleures pratiques en matière de sécurité.

Bases du système de permissions sous Linux

Catégories des utilisateurs sous Linux

Pour chaque fichier ou dossier sous Linux, il existe trois catégories d’utilisateurs ayant des permissions indépendantes :

L’utilisateur propriétaire (Owner) : L’utilisateur principal qui possède le fichier ou le dossier. Il est généralement défini lors de la création du fichier et peut être modifié à l’aide de la commande chown.

Le groupe (Group) : Les utilisateurs appartenant à un groupe associé au fichier. Les membres de ce groupe peuvent avoir un ensemble distinct de permissions différent du propriétaire et des autres utilisateurs.

Les autres (Others) : Tout utilisateur qui n’est ni propriétaire du fichier ni membre du groupe associé. Cette catégorie inclut tous les autres utilisateurs du système.

Types de permissions de base

Il existe trois types principaux de permissions pour chaque catégorie précitée :

La lecture (Read – r) :
– Pour les fichiers : le droit d’ouvrir leur contenu
– Pour les dossiers : le droit de consulter leur contenu (c’est-à-dire de voir les noms des fichiers et dossiers internes)

La modification (Write – w) :
– Pour les fichiers : le droit de modifier leur contenu
– Pour les dossiers : le droit de créer ou de supprimer des fichiers et dossiers à l’intérieur

L’exécution (Execute – x) :
– Pour les fichiers : le droit d’exécuter le fichier en tant que programme
– Pour les dossiers : le droit d’accéder à leur contenu (c’est-à-dire de les entrer à l’aide de cd)

Lecture de la sortie de la commande ls -l

Lorsque vous utilisez la commande ls -l pour afficher les fichiers et dossiers, les informations de permissions apparaîtront dans le premier champ sous la forme suivante :

-rwxr-xr-- 1 user group 2048 Jan 1 10:00 filename

Le premier caractère indique le type de l’élément (- pour un fichier, d pour un dossier). Les permissions sont divisées en trois groupes, chacun comprenant trois caractères :

1. Les trois premières permissions (rwx) : pour l’utilisateur propriétaire
2. Les trois permissions intermédiaires (r-x) : pour les membres du groupe
3. Les trois dernières permissions (r–) : pour les autres utilisateurs

Méthodes différentes d’utilisation de la commande chmod

Formule de base de la commande chmod

La formule de base pour chmod est :

chmod [options] permission-setting file

Où les permissions peuvent être définies de deux façons principales :

1. La méthode numérique (octale) : en utilisant des chiffres représentant les groupes de permissions (comme 755)

2. La méthode symbolique : en utilisant des symboles (u, g, o, a) avec (+,-,=) et (r,w,x)

La méthode numérique (octale)

Avec cette méthode, les permissions sont représentées par un chiffre allant de 0 à 7 selon le tableau suivant :

Numéro Permissions Calcul de la valeur
0 ––– 0+0+0
1 -x- 0+0+1
2 -w- 0+2+0
3 -wx 0+2+1
4 r–- 4+0+0
5 r-x 4+0+1
6 rw- 4+2+0
7 rwx 4+2+1

Pour définir les permissions d’un fichier en utilisant la méthode numérique, nous utilisons trois chiffres représentant :

1. Le premier chiffre : les permissions de l’utilisateur propriétaire
2. Le deuxième chiffre : les permissions du groupe
3. Le troisième chiffre : les permissions des autres utilisateurs

Exemple : pour donner toutes les permissions à l’utilisateur propriétaire, et la lecture et l’exécution au groupe et aux autres :

chmod 755 filename

La méthode symbolique

Cette méthode offre plus de flexibilité pour modifier des permissions spécifiques sans altérer les autres. La formule générale est :

chmod [ugoa...][[+-=][rwxXst...][,...]] file

Où :

Les cibles d’utilisateur :
– u : pour l’utilisateur propriétaire
– g : pour le groupe
– o : pour les autres utilisateurs
– a : pour tous (abrégé de ugo)

Les opérateurs :
– + : ajout des permissions spécifiées
– – : suppression des permissions spécifiées
– = : définition exacte des permissions spécifiées (suppression de toutes les autres permissions pour la catégorie)

Types de permissions :
– r : lecture
– w : écriture
– x : exécution/accès
– s : setuid/setgid
– t : bit sticky

Exemple : pour donner le droit d’exécution à l’utilisateur propriétaire uniquement :

chmod u+x filename

Utilisations avancées de la commande chmod

Application des permissions de manière récursive sur les dossiers

L’option -R permet d’appliquer les permissions de manière récursive (recursive) sur un dossier et ses contenus :

chmod -R 755 /chemin/vers/dossier

Cette commande applique les changements à :

– Le dossier principal lui-même
– Tous les fichiers et sous-dossiers à l’intérieur
– Tous les contenus des niveaux plus profonds

Avertissement : soyez prudent lors de l’utilisation de l’option -R, surtout avec des chemins haut niveau comme / ou /etc, car cela pourrait rendre le système inutilisable.

Permissions spéciales : setuid, setgid, et sticky bit

Il existe certaines permissions spéciales qui offrent des fonctionnalités supplémentaires :

setuid (s pour l’utilisateur) : Lorsqu’elle est appliquée à un fichier exécutable, le programme est exécuté avec les permissions du propriétaire du fichier et non avec celles de l’utilisateur qui l’exécute.

chmod u+s /usr/bin/program

setgid (s pour le groupe) :
– Pour les fichiers exécutables : similaire à setuid, mais avec les permissions du groupe
– Pour les dossiers : les nouveaux fichiers créés à l’intérieur héritent du groupe du dossier principal
chmod g+s /shared/folder

bit sticky (t pour les autres) : Seulement applicable aux dossiers, il permet aux propriétaires d’ajouter/supprimer des fichiers même si le groupe ou les autres utilisateurs disposent de permissions d’écriture.

chmod +t /tmp

Dans la méthode numérique, ces permissions spéciales sont représentées par un quatrième chiffre avant les trois chiffres principaux (comme 4755 pour setuid).

Sauvegarde des permissions par défaut en utilisant umask

Alors que chmod modifie les permissions existantes, la commande umask permet de contrôler les permissions par défaut des nouveaux fichiers et dossiers :

umask 0022

Où les chiffres représentent les permissions qui seront supprimées (masked) des permissions de base. Les permissions de base sont :

– 666 pour les fichiers (rw-rw-rw-)
– 777 pour les dossiers (rwxrwxrwx)

Avec l’application de umask 0022 (utilisateur normal) :

– Les nouveaux fichiers : 666 – 022 = 644 (rw-r–r–)
– Les nouveaux dossiers : 777 – 022 = 755 (rwxr-xr-x)

Cas pratiques et solutions courantes

Correction des permissions d’un site web

La plupart des applications web nécessitent des permissions spécifiques pour fonctionner correctement tout en préservant la sécurité. Pour corriger les permissions d’un site web modèle :

# L'utilisateur (par exemple www-data) dispose de toutes les permissions
chown -R www-data:www-data /var/www/html

# Fichiers du site - lecture pour le propriétaire et le groupe
find /var/www/html -type f -exec chmod 664 {} \;

# Dossiers du site - ajout de l'exécution pour l'accès
find /var/www/html -type d -exec chmod 775 {} \;

# Dossiers accessibles à l'application (comme les uploads)
chmod -R 777 /var/www/html/uploads

Rendre un fichier texte exécutable

Pour permettre l’exécution d’un fichier texte (script) :

1. Ajoutez une ligne de shebang en haut du fichier :

#!/bin/bash

2. Rendez-le exécutable :

chmod +x script.sh

3. Le fichier peut désormais être exécuté directement :

./script.sh

Création d’un dossier partagé entre plusieurs utilisateurs

Pour créer un dossier pouvant être modifié par une groupe spécifique :

1. Création du groupe (si elle n’existe pas) :

sudo groupadd mygroup

2. Ajout des utilisateurs au groupe :

sudo usermod -aG mygroup user1
sudo usermod -aG mygroup user2

3. Création du dossier partagé et attribution du groupe :

sudo mkdir /shared
sudo chown root:mygroup /shared
sudo chmod 775 /shared

4. Vérifiez que setgid est activé pour garantir que les nouveaux fichiers conservent le groupe correct :

sudo chmod g+s /shared

Résolution de la problème courant « Permission denied »

En cas d’erreur « Permission denied », suivez ces étapes pour résoudre le problème :

1. Vérifiez les permissions actuelles :

ls -l /chemin/vers/fichier

2. Vérifiez le propriétaire du fichier et son groupe :

ls -ld /chemin/vers/fichier

3. Assurez-vous que l’utilisateur appartient au groupe correct :

groups

4. Vérifiez les permissions sur le chemin complet du fichier/dossier :

namei -l /chemin/absolu/vers/fichier

5. Modifiez les permissions selon vos besoins à l’aide de chmod et chown

Meilleures pratiques en matière de sécurité et avertissements

Pratiques erronées courantes

Évitez ces erreurs qui peuvent entraîner des vulnérabilités de sécurité :

Utilisation aléatoire de 777 : Donner toutes les permissions à tous peut résoudre temporairement le problème, mais crée une vulnérabilité de sécurité grave. Il est préférable de définir les ajustements de permissions les plus précis nécessaires.

Manque de prudence avec setuid/setgid : Les programmes exécutables avec de hautes permissions peuvent être dangereux s’ils sont exploités.

Oublier les dossiers lors de l’application récursive : Lorsque vous utilisez chmod -R, rappelez-vous que les dossiers nécessitent souvent des droits d’exécution supplémentaires comparés aux fichiers.

Conseils de sécurité importants pour la commande chmod

1. Principe des privilèges minimum : Donnez uniquement les privilèges nécessaires pour accomplir une tâche donnée.

2. Partitionnement des permissions : Utilisez les groupes d’utilisateurs et les listes de contrôle d’accès (ACL) pour isoler les permissions.

3. Contrôle régulier : Vérifiez régulièrement les permissions des fichiers et dossiers sensibles.

4. Sauvegarde des permissions : Conservez un journal des permissions du système de base pour les récupérer si nécessaire.

5. Automatisation des ajustements : Utilisez des scripts pour appliquer les politiques de permissions de manière cohérente à travers le système.

Outils d’aide pour l’administration des permissions

getfacl/setfacl : pour gérer les lists d’accès (ACL) qui offrent un contrôle plus détaillé que le système Linux basique.

auditd : pour surveiller les changements dans les permissions des fichiers et dossiers sensibles.

lsattr/chattr : pour gérer les attributs étendus des fichiers qui peuvent affecter la modification même si des permissions d’écriture sont présentes.

fstab avec des options comme noexec/nodev : pour empêcher l’exécution de programmes ou l’accès à des périphériques sur certaines montures.

Maîtriser la commande chmod et comprendre le système de permissions sous Linux est une compétence essentielle pour tout utilisateur ou administrateur. Nous avons couvert, dans ce guide, les deux principales méthodes d’utilisation de chmod (numérique et symbolique), les permissions spéciales comme setuid, setgid et le bit sticky, ainsi que des scénarios pratiques courants et des solutions pour des problèmes récurrents.

Les points clés à retenir :

1. Utilisez la méthode numérique pour les réglages fixes et la méthode symbolique pour les modifications précises.

2. Soyez prudent en utilisant l’option -R pour appliquer des permissions de manière récursive.

3. Suivez le principe « privilèges minimum » pour une meilleure sécurité.

4. Utilisez les groupes d’utilisateurs et les permissions de groupe pour partager des fichiers de manière sécurisée.

5. Apprenez à utiliser des outils comme getfacl et umask pour un contrôle précis des permissions.

Pour approfondir vos connaissances, vous pouvez explorer :

– les listes d’accès (ACL) pour un contrôle complexe des permissions
– des outils de surveillance comme auditd
– la configuration de sudoers pour contrôler les privilèges des utilisateurs
– la gestion des permissions dans des systèmes de fichiers avancés comme ZFS et Btrfs

Références et sites utiles

1. La page officielle de GNU Coreutils

2. Documentation Red Hat sur les permissions

3. Le Projet de documentation Linux (TLDP)

Partagez votre amour
meher makloufi
meher makloufi

Je suis un tunisien né en 1993, diplômé en informatique de gestion. Je travaille comme développeur web depuis 2016, et je suis un chercheur en informatique passionné. Je partage du contenu qui reflète mon expérience et tout ce que j'ai appris de manière simple et claire pour tous ceux qui cherchent à en savoir plus dans ce domaine. Je possède et gère plusieurs sites web et combine mon amour pour l'art avec la lecture de livres scientifiques, intellectuels et religieux. Je me porte volontaire autant que possible pour enrichir et soutenir la communauté technique arabe d'abord et la communauté mondiale ensuite.

Articles: 42