Comment utiliser la commande chmod sous Linux



La commande chmod sous Linux est un outil puissant qui vous permet de gérer précisément les accès aux fichiers et répertoires, ainsi que l’exécution des scripts. Bien que les permissions puissent sembler complexes au premier abord, leur logique devient rapidement claire une fois les bases comprises.

Contrôle des Autorisations avec chmod

Le système de permissions de Linux repose sur trois ensembles distincts. Chaque fichier ou répertoire est associé à un ensemble d’autorisations pour son propriétaire, un autre pour les membres de son groupe, et enfin, un dernier pour tous les autres utilisateurs du système.

Ces autorisations déterminent les actions possibles sur les éléments concernés. Elles régissent si un fichier peut être lu, modifié, ou exécuté (dans le cas de scripts ou programmes). Pour les répertoires, les autorisations définissent qui peut y accéder, créer ou modifier des fichiers.

La commande chmod sert à ajuster ces permissions. Pour consulter les autorisations actuelles d’un fichier ou répertoire, on utilise la commande ls, et plus précisément avec l’option -l pour un affichage détaillé.

Visualisation et Interprétation des Permissions

L’option -l de la commande ls nous donne une vue détaillée des autorisations, affichant chaque élément sur une ligne distincte.

ls -l

Le premier caractère de chaque ligne indique le type d’élément : un tiret (-) pour un fichier standard et la lettre ‘d’ pour un répertoire.

Les neuf caractères suivants représentent les autorisations. Ils sont divisés en trois groupes de trois caractères chacun.

Les trois premiers caractères concernent les autorisations du propriétaire du fichier, les trois suivants, celles du groupe et les trois derniers, celles des autres utilisateurs.

Dans chaque groupe de trois caractères, un tiret (-) signifie que la permission correspondante n’est pas accordée, tandis que les lettres ‘r’, ‘w’ ou ‘x’ indiquent que la permission est accordée.

Significations des lettres:

  • r : Permission de lecture, permettant d’ouvrir et de consulter le contenu du fichier.
  • w : Permission d’écriture, permettant de modifier ou supprimer le fichier.
  • x : Permission d’exécution, permettant d’exécuter le fichier s’il s’agit d’un script ou d’un programme.

Exemples :

  • --- : Aucune permission.
  • rwx : Toutes les permissions accordées (lecture, écriture, exécution).

Prenons un exemple de la capture d’écran : une ligne commençant par « d » indique un répertoire, nommé « archive ». Son propriétaire est « dave », et il appartient au groupe « dave ». Les autorisations du propriétaire sont « rwx », signifiant que « dave » a toutes les permissions sur ce répertoire. Pour le groupe, les autorisations sont « rx », autorisant la lecture et l’exécution, mais pas l’écriture. Les autres utilisateurs ont également les permissions « rx », avec les mêmes limitations.

En résumé, le propriétaire « dave » possède un contrôle total sur le répertoire, tandis que les membres du groupe et les autres utilisateurs peuvent uniquement lister le contenu et y naviguer, mais pas le modifier.

La plupart des fichiers, à l’exception de « mh.sh », donnent à « dave » et à son groupe des droits de lecture et d’écriture, et aux autres utilisateurs, un droit de lecture seule. Le fichier de script « mh.sh » donne les trois droits (« rwx ») à son propriétaire et à son groupe, et un droit de lecture et d’exécution (« rx ») aux autres.

Syntaxe de la Commande chmod

Pour utiliser chmod, on doit spécifier :

  • Qui : À qui s’adressent les changements d’autorisations (propriétaire, groupe, autres).
  • Quoi : L’opération à effectuer (ajouter ou supprimer une permission).
  • Lequel : La permission concernée (lecture, écriture, exécution).

On utilise des indicateurs pour ces valeurs, formant des « instructions d’autorisations ». Par exemple, « u+x » signifie « ajouter la permission d’exécution au propriétaire » (u pour utilisateur, + pour ajouter, et x pour exécution).

Indicateurs pour « Qui » :

  • u : Utilisateur (propriétaire).
  • g : Groupe.
  • o : Autres utilisateurs.
  • a : Tous les utilisateurs.

Si aucun de ces indicateurs n’est spécifié, chmod considère qu’il doit s’appliquer à tous les utilisateurs (comme si « a » avait été utilisé).

Indicateurs pour « Quoi » :

  • : Supprimer la permission.
  • + : Ajouter la permission (en conservant les permissions existantes).
  • = : Définir l’autorisation et supprimer toutes les autres.

Indicateurs pour « Lequel » :

  • r : Permission de lecture.
  • w : Permission d’écriture.
  • x : Permission d’exécution.

Modification des Permissions en Pratique

Imaginons un fichier où tout le monde a toutes les autorisations.

ls -l new_file.txt

On souhaite que le propriétaire « dave » ait les permissions de lecture et d’écriture, et que le groupe et les autres utilisateurs aient uniquement la permission de lecture. On utilise :

chmod u=rw,og=r new_file.txt

L’opérateur « = » efface les autorisations existantes et définit celles spécifiées. La vérification donne :

ls -l new_file.txt

Si l’on veut ajouter une permission sans supprimer les autres, on utilise « + ». Supposons un script où l’on veut donner l’accès en exécution à tous les utilisateurs. Actuellement, les permissions sont :

ls -l new_script.sh

On ajoute la permission d’exécution à tous, avec :

chmod a+x new_script.sh

Après vérification, l’autorisation d’exécution est bien ajoutée pour tous, sans modifier les autres permissions :

ls -l new_script.sh

Il est à noter que chmod +x new_script.sh aurait donné le même résultat.

Permissions Multiples

Il est possible d’appliquer des permissions à plusieurs fichiers en même temps. Par exemple, si l’on veut supprimer la permission d’écriture pour les autres utilisateurs, sur tous les fichiers en « .page » :

ls -l

chmod o-r *.page

Après vérification :

ls -l

L’autorisation de lecture pour la catégorie « autre » des utilisateurs a été supprimée sur les fichiers « .page ». Pour inclure les fichiers dans les sous-répertoires, on utilise l’option -R (récursive) :

chmod -R o-r *.page

Représentation Numérique des Permissions

Une autre méthode pour utiliser chmod est de fournir les permissions sous forme d’un nombre à trois chiffres. Chaque chiffre représente les permissions pour le propriétaire, le groupe et les autres, respectivement.

Chaque chiffre est une valeur entre 0 et 7, où:

0(000) Aucune permission.
1(001) Exécution.
2(010) Écriture.
3(011) Écriture et exécution.
4(100) Lecture.
5(101) Lecture et exécution.
6(110) Lecture et écriture.
7(111) Lecture, écriture et exécution.

Chaque permission est représentée par un bit dans la représentation binaire du nombre. Par exemple, 5 (101 en binaire) signifie lecture et exécution, 2 (010 en binaire) signifie écriture.

Avec cette méthode, on définit les permissions exactes et on n’ajoute pas de permission à celles qui sont existantes. Donc, si vous voulez ajouter le droit d’exécution aux droits de lecture et d’écriture, il faut donner la valeur 7 (111). Donner la valeur 1 (001) enlèvera la lecture et l’écriture, et ne donnera que le droit d’exécution.

Pour donner le droit de lecture aux « autres » utilisateurs sur les fichiers « .page », on peut faire:

chmod 664 *.page

Les valeurs sont mises à jour à ce que l’on demande : les utilisateurs et les membres du groupe ont les droits de lecture et d’écriture, tandis que les autres utilisateurs ont uniquement le droit de lecture.

ls -l

Options Avancées

La page de manuel de chmod offre des options avancées pour les bits SETUID et SETGID, ainsi que pour le bit « sticky » pour la suppression restreinte. Toutefois, dans la plupart des cas d’utilisation courante, les options présentées ici seront amplement suffisantes. Pour la majorité des situations où vous aurez besoin de la commande chmod, les méthodes décrites ici suffiront.