Êtes-vous fatigué de devoir changer manuellement les autorisations de fichiers et de répertoires ? Cherchez-vous un moyen plus rapide et plus efficace de modifier les autorisations de vos fichiers et répertoires ? Si c’est le cas, vous êtes au bon endroit car, dans cet article, vous apprendrez comment modifier les autorisations de fichiers et de répertoires en utilisant la commande chmod
de manière récursive !
Continuez à lire pour en savoir plus !
Prérequis
Pour suivre, vous avez besoin d’un appareil Linux et d’un répertoire dont les fichiers et sous-répertoires ont des autorisations disponibles pour pratiquer.
Apprendre sur les utilisateurs et les groupes Linux
Les propriétaires et les groupes sont importants sous Linux, nécessaires pour gérer de manière sécurisée les fichiers et répertoires. Le propriétaire est celui à qui un fichier ou un répertoire est attribué, ce qui est le créateur, par défaut. Sous Linux, les fichiers et répertoires appartiennent également à des groupes. Les utilisateurs et les groupes sont définis via la commande chown
.
Dans la capture d’écran ci-dessous, le contenu mis en évidence en vert montre l’utilisateur qui possède le fichier ou le répertoire, mihail
dans cet exemple. Le contenu mis en évidence en bleu montre à quel groupe appartient le fichier ou le répertoire, détenu par le groupe staff
dans cet exemple.

Comprendre les autorisations de fichiers et de répertoires sous Linux
Les autorisations définissent les actions qu’un utilisateur ou un groupe peut effectuer sur un fichier ou un répertoire donné. Elles sont indiquées par une représentation caractère et également attribuées une valeur numérique.
- Lecture (
r
ou4
) : Indique si un utilisateur ou un groupe peut lire le contenu du fichier ou du répertoire. L’autorisation de lecture est accordée par défaut à tous les fichiers et répertoires nouvellement créés pour toutes les parties concernées. - Écriture (
w
ou2
) : Indique si un utilisateur ou un groupe peut modifier le contenu d’un objet. Cette autorisation est accordée par défaut uniquement au propriétaire du fichier ou du répertoire. - Exécution (
x
ou1
) : Indique si un utilisateur ou un groupe peut exécuter un fichier ou exécuter des commandes à l’intérieur d’un répertoire. L’autorisation d’exécution est accordée par défaut uniquement aux répertoires mais pas aux fichiers.
Si vous n’accordez pas les autorisations d’exécution à l’utilisateur (
u
) pour un répertoire, il ne pourra pas afficher son contenu car l’utilisateur ne pourra pas exécuter de commandes à l’intérieur du répertoire !
Un exemple est présenté ci-dessous, la sortie de la commande ls -l
montre les différents types d’autorisations. Les autorisations précédées de la valeur d
indiquent un répertoire.

Pourquoi y a-t-il apparemment trois ensembles d’autorisations pour chaque objet ? Un contrôle précis des autorisations est réalisé en divisant les autorisations en sections (appelées parties dans le cadre de ce tutoriel) énumérées ci-dessous.
- Utilisateur (
u
): Le propriétaire d’un fichier ou d’un répertoire, mis en évidence en bleu. - Groupe (
g
): Membres du groupe auquel appartient un fichier ou un répertoire, mis en évidence en vert. - Autre (
o
): Tous les utilisateurs et groupes supplémentaires non explicitement assignés, mis en évidence en rouge.

Modification des autorisations de fichier via la commande récursive chmod
Avec une bonne compréhension des autorisations Linux, continuez à apprendre comment modifier les autorisations de fichier. Les autorisations sont modifiées via la commande récursive chmod
comme le montrent les exemples ci-dessous.
1. Tout d’abord, vérifiez les autorisations actuelles avec la commande ls -l
. Ici, le fichier my_dir/index.js est affiché.

2. Exécutez la commande chmod
, en spécifiant le groupe, a
(tous), et les autorisations, rwx
, ou lecture/écriture/exécution. La commande complète est la suivante: chmod a=rwx index.js
.

3. Comme vous pouvez le voir, l’exécution de chmod
récursif ne renvoie aucune sortie. Pour vérifier que les autorisations ont changé, exécutez à nouveau la commande ls -l
.

Définition des autorisations de fichier via des valeurs numériques
Rappelez-vous des nombres associés aux autorisations telles que la lecture ou l’écriture ? Au lieu de spécifier les valeurs de caractère, vous pouvez spécifier des autorisations spécifiques via un nombre. En ajoutant les valeurs, vous créez une autorisation spécifique telle que 6
qui est une combinaison des autorisations d’écriture (2
) et de lecture (4
).
Dans l’exemple ci-dessous, définissez les autorisations pour le fichier main.py via la commande chmod 664 main.py
. Les valeurs numériques se décomposent comme suit.
- Utilisateur : Lecture et écriture (
6
). - Groupe : Lecture et écriture (
6
). - Autre : Lecture (
4
).

Une fois les autorisations modifiées, vérifiez les nouvelles autorisations pour le fichier main.py avec la commande ls -l
.

Suppression et ajout d’autorisations de fichier
Les commandes non numériques que vous avez exécutées jusqu’à présent utilisent le paramètre d’attribution (=
) avec chmod
récursif pour définir des autorisations explicites. Au lieu de cela, vous pouvez supprimer (-
) ou ajouter (+
) des autorisations aux ensembles d’autorisations existants.
1. Tout d’abord, répertoriez les autorisations existantes pour le fichier README.md avec la commande ls -l README.md
.

2. Ensuite, ajoutez (+
) les autorisations d’exécution (x
) pour le parti utilisateur (u
), tout en supprimant (-
) les autorisations de lecture (r
) pour l’autre parti (o
) pour README.md, avec la commande suivante chmod u+x,o-r README.md
. Les autorisations de parties différentes sont séparées par des virgules (,
).

3. Exécutez la commande ls -l README.md
pour vérifier que les autorisations ont été modifiées.

Modification récursive des autorisations de fichiers et de répertoires
Bien que vous progressiez, vous n’opérez que sur un fichier à la fois. Que faire si vous avez un grand nombre de fichiers pour lesquels vous devez modifier les autorisations ? Il est temps de relever le défi et d’apprendre à changer les autorisations pour plusieurs fichiers.
Une des options pour changer les autorisations de plusieurs fichiers est d’exécuter la commande chmod
de manière récursive avec l’option -R
(récursive, en minuscules). L’option récursive changera les autorisations pour tous les fichiers, y compris ceux des sous-répertoires, à l’intérieur d’un chemin donné.
1. Considérez la commande suivante, chmod -R a=r,u=rwx mon_repertoire
. La plupart des options que vous avez déjà vues auparavant.
Cette commande changera les autorisations pour tous les fichiers du répertoire, mon_repertoire, et des sous-répertoires, via l’option récursive (-R
). Les fichiers sont rendus lisibles (r
) pour tous (a
), avec des autorisations différentes pour l’utilisateur actuel (u
) définies sur toutes les permissions (lecture, écriture, exécution).
Sur la capture d’écran ci-dessous, vous voyez les autorisations résultantes après l’exécution de la commande, qui n’a pas de sortie visible.

2. Supposons que vous exécutez la commande chmod -R a=rwx mon_repertoire
sur le même répertoire qu’auparavant, mon_repertoire. Encore une fois, vous modifiez tous les fichiers dans mon_repertoire, et ses sous-répertoires, pour leur donner toutes les permissions (a
) (lecture, écriture, exécution). Voici le résultat de la commande, car chmod
récursif ne génère pas de sortie.

1. Comment la méthode numérique fonctionne-t-elle? Comme indiqué ci-dessous, la méthode récursive fonctionne également avec les autorisations numériques, chmod -R 770 my_dir
. Vous accordez ainsi des autorisations complètes à l’utilisateur et au groupe, mais aucune autorisation à l’autre partie.

2. Exécutez ls -l
pour vérifier que les autorisations des fichiers et sous-répertoires de my_dir sont définies avec la méthode numérique.

Définition du comportement des fichiers et dossiers via des autorisations spéciales
Les autorisations spéciales permettent plusieurs privilèges supplémentaires par rapport aux ensembles d’autorisations standard. Il existe trois autorisations spéciales. Voici comment ces autorisations spéciales fonctionnent et comment vous pouvez les ajouter à un fichier ou à un répertoire.
Définition des autorisations SUID (Utilisateur + S)
Communément notée comme SUID, c’est une autorisation spéciale pour l’utilisateur. Le SUID a une seule fonction : un fichier avec le SUID s’exécute toujours en tant que l’utilisateur qui possède le fichier, quel que soit l’utilisateur qui exécute le fichier.
Par exemple, considérez index.js. Pour donner l’autorisation supplémentaire SUID, exécutez chmod u+s index.js
.
Maintenant, si vous exécutez ls -l index.js
, vous verrez que l’utilisateur a un s dans ses autorisations au lieu d’un x.

Définition des autorisations SGID (Groupe + S)
Communément notée comme SGID, cette autorisation spéciale a deux fonctions:
- Si elle est définie pour un fichier, elle permet au fichier d’être exécuté en tant que groupe qui possède le fichier, quel que soit l’utilisateur qui exécute le fichier.
- Si configuré pour un répertoire, tous les fichiers créés dans le répertoire auront leur propriété de groupe définie sur celle du propriétaire du répertoire.
Pratiquez sur le fichier index.php. Pour ajouter l’autorisation SGID à ce fichier, exécutez la commande suivante : chmod g+s index.php
.
Maintenant, si vous exécutez ls -l index.php
, vous constaterez que le groupe a un s dans ses permissions.

Passez à un répertoire : mon_repertoire. Vous pouvez ajouter l’autorisation SGID à ce répertoire en utilisant la commande suivante : chmod g+s mon_repertoire
. Tous les fichiers créés dans ce répertoire auront maintenant leur propriété de groupe définie sur celle du propriétaire du répertoire. Vous pouvez vérifier les nouvelles permissions du répertoire en utilisant ls -ld mon_repertoire
(le paramètre d
limite la sortie aux répertoires uniquement).

Changement de la permission du bit collant
La dernière permission spéciale est également connue sous le nom de « bit collant ». Cette permission n’affecte pas les fichiers individuels. Mais, au niveau du répertoire, elle restreint la suppression de fichiers. Seul le propriétaire d’un fichier peut supprimer un fichier dans ce répertoire.
Ajoutez le bit collant au vieux répertoire familier mon_repertoire. Pour ce faire, exécutez la commande comme suit : chmod +t mon_repertoire
.
Notez que, pour ajouter le bit collant, vous ne spécifiez pas le groupe
autre (o) avant le+t
.
Lorsque vous vérifiez les nouvelles permissions de mon_repertoire, vous verrez un T majuscule dans les permissions autre, comme indiqué dans la capture d’écran ci-dessous.

Conclusion
Félicitations! Vous avez couvert de nombreux sujets sur chmod
récursif. Vous êtes maintenant prêt à affronter tous les problèmes de permission ennuyeux qui surviennent avec l’outil tout-puissant chmod
. Vous avez même appris comment tirer parti de la puissance de l’option récursive (-R
).
Comment avez-vous l’intention d’implémenter la fonctionnalité polyvalente de chmod
à votre avantage la prochaine fois que vous devrez gérer les autorisations de fichiers ou de répertoires?