La commande chmod sous Linux est utilisée pour modifier ou attribuer des autorisations sur des fichiers et des répertoires. Dans les systèmes Linux/Unix, l'accessibilité aux fichiers et aux répertoires est déterminée par la propriété des fichiers et les autorisations. Dans un article précédent, nous avons vu comment gérer la propriété des fichiers et des répertoires à l'aide de la commande chown. Dans ce didacticiel, nous examinons la commande chmod.
La commande chmod, abréviation de mode de changement, est utilisée pour gérer les autorisations de fichiers et de répertoires et détermine qui peut y accéder. Plongeons maintenant et explorons la nature des autorisations de fichiers et de répertoires et comment elles peuvent être modifiées.
Autorisations Linux
Pour mieux comprendre le fonctionnement de la commande chmod, il est prudent d'étudier le modèle d'autorisations de fichiers Linux.
Sous Linux, nous avons 3 types d'autorisations de fichiers :les autorisations de lecture (r), d'écriture (w) et d'exécution (x). Ces autorisations déterminent quels utilisateurs peuvent lire, écrire ou exécuter les fichiers. Vous pouvez attribuer ces autorisations en utilisant la notation textuelle ou octale (numérique), comme nous le verrons plus tard dans ce didacticiel.
Les fichiers et répertoires peuvent appartenir au propriétaire du fichier (u), au groupe (g) ou à d'autres (o)
- u – Propriétaire du fichier
- g – Groupe
- o – Autres
Les autorisations de fichiers sont répertoriées à l'aide de la commande ls -l. L'indicateur -l répertorie les autorisations de fichier. Les autorisations sont organisées en trois ensembles :l'utilisateur, le groupe et les autres respectivement
Pour mieux comprendre les autorisations de fichiers, nous allons lister le contenu de notre répertoire comme indiqué :
$ ls -l
En partant de l'extrême gauche, le premier caractère/symbole indique le type de fichier. Un trait d'union (-) indique que le fichier est un fichier normal. Le symbole d indique qu'il s'agit d'un répertoire. Le symbole l indique qu'il s'agit d'un lien symbolique.
Les neuf caractères restants sont segmentés en 3 triplets portant chacun trois symboles r(lecture), w(écriture) et x(exécution). Comme indiqué précédemment, le premier segment pointe vers les autorisations du propriétaire, le second indique les autorisations du groupe et la dernière partie spécifie les autorisations dont disposent les autres utilisateurs sur le fichier ou le répertoire.
À partir de la sortie, nous pouvons voir que nous avons 2 fichiers (hello.txt &reports.zip) et un seul répertoire.
Examinons le premier fichier
-rw-rw-r-- 1 linuxtechi linuxtechi 35 Aug 17 15:42 hello.txt
Pour le premier fichier, les autorisations -rw-rw-r– impliquent que le propriétaire du fichier a des autorisations de lecture et d'écriture, le groupe possède également des autorisations de lecture et d'écriture, tandis que les autres utilisateurs n'ont que des autorisations de lecture. Les mêmes autorisations s'appliquent également au fichier compressé reports.zip.
Regardons les permissions du répertoire :
drwxrwxr-x 2 linuxtechi linuxtechi 4096 Aug 17 15:43 sales
Nous pouvons voir que le propriétaire du répertoire et du groupe dispose de toutes les autorisations (lecture, écriture et exécution) tandis que les autres utilisateurs n'ont que les autorisations de lecture et d'exécution.
Les symboles de triple trait d'union - indiquent qu'aucune autorisation n'a été accordée au propriétaire du fichier, au groupe ou à d'autres utilisateurs.
Utilisation de la commande chmod pour définir les autorisations de fichiers et de répertoires
Après avoir examiné les autorisations de fichiers et comment les afficher, ne nous concentrons pas sur la façon de modifier ces autorisations.
La commande chmod sous Linux est utilisée pour modifier les autorisations de fichiers et de répertoires en utilisant la notation textuelle (symbolique) ou numérique (octale). Il prend la syntaxe suivante :
$ chmod [OPTIONS] MODE nom de fichier
Seul l'utilisateur root ou un utilisateur régulier avec des privilèges sudo peut modifier les autorisations de fichiers ou de répertoires. Vous pouvez transmettre plusieurs fichiers ou répertoires séparés par des espaces dans la syntaxe de la commande.
Examinons maintenant et voyons différents exemples de commande chmod.
Exemple 1) Attribuer des autorisations à l'aide d'une notation numérique
Lorsque vous définissez des autorisations à l'aide du style/notation numérique, utilisez la syntaxe ci-dessous :
$ sudo chmod [OPTIONS] valeur_numérique nom_fichier
La valeur numérique peut prendre 3 ou 4 chiffres. Cependant, dans la plupart des cas, 3 numéros sont utilisés. Les droits de lecture, d'écriture et d'exécution prennent les valeurs suivantes :
- autorisation de lecture => 4
- autorisation d'écriture => 2
- autorisation d'exécution => 1
La somme totale des valeurs des autorisations, c'est-à-dire lire, écrire et exécuter dans chacun des trois segments, représente les autorisations complètes d'un fichier ou d'un répertoire donné.
Qu'entendons-nous par là ?
Supposons que le propriétaire ait des autorisations de lecture, d'écriture et d'exécution, que le groupe ait des autorisations de lecture et d'exécution et que les autres utilisateurs aient uniquement des autorisations de lecture, cela peut être décomposé comme suit :
- u : rwx =7
- g : r-x =5
- o : r– =4
Par conséquent, nous arrivons à la valeur de 754 comme valeur numérique pour les autorisations de fichier du fichier donné.
Pour attribuer des autorisations de lecture, d'écriture et d'exécution au propriétaire, et des autorisations de lecture uniquement au groupe et aux autres utilisateurs, exécutez la commande :
$ chmod 744 devops.txt
Pour attribuer toutes les autorisations au propriétaire du fichier, les autorisations de lecture et d'exécution au groupe et aucune autorisation aux autres utilisateurs, exécutez :
$ chmod 750 coders.txt
Pour attribuer toutes les autorisations au propriétaire du fichier, lire et écrire les autorisations au groupe et aux autres utilisateurs, exécutez la commande :
$ chmod 755 sysadmin.txt
Exemple 2) Attribution récursive d'autorisations aux répertoires
Lors de l'attribution d'autorisations à des répertoires, utilisez l'indicateur -R pour attribuer de manière récursive des autorisations à ses fichiers et sous-dossiers. Par exemple :
$ chmod 755 -R nom_répertoire
$ chmod 755 -R /home/linuxtechi/data
Exemple 3) Attribuer des autorisations à l'aide de la notation textuelle
Une autre façon d'attribuer des autorisations consiste à utiliser la notation textuelle. Dans cette méthode, la commande chmod prend des drapeaux ou des symboles qui représentent le propriétaire, le groupe, les autres ou tous les utilisateurs ( u, g et o) dans la syntaxe.
La méthode n'est pas aussi simple que la méthode précédente et des précautions doivent être prises pour éviter d'attribuer les mauvaises autorisations.
Voici à quoi ressemble la syntaxe
$ chmod [OPTIONS] [ u g o a ] [ – + =] [ r, w, x ] fichier
Décomposons cela.
Le premier groupe de paramètres [ u g o a] spécifie la catégorie d'utilisateurs dont les autorisations changeront
- u :utilisateur
- g :groupe
- o :autre
- a :tous (cela inclut tout ce qui précède)
Si cet ensemble est omis, l'option par défaut est l'option a.
Le deuxième ensemble d'options - les options de l'opérateur [ - + =] - détermine si des autorisations vont être ajoutées ou supprimées de la catégorie d'utilisateurs. L'option supprimer
- – :l'indicateur supprime les autorisations de fichier d'un utilisateur spécifié.
- + :cela ajoute/ajoute des autorisations à un utilisateur spécifié.
- = :cela attribue des autorisations distinctes aux utilisateurs spécifiés et supprime les autorisations précédentes du segment d'utilisateurs.
Voyons quelques exemples :
Exemple 4) Attribuer des autorisations de lecture à un fichier
$ chmod o=r nom de fichier
La commande ci-dessus attribue aux autres utilisateurs désignés par le symbole « o » des autorisations de lecture uniquement sur le fichier et supprime les autorisations antérieures attribuées au segment « autres ». Prenez un file1.txt qui a les permissions suivantes
Pour attribuer des autorisations de lecture de segment "autres ( o )" uniquement, exécutez
$ sudo chmod o=r file1.txt
À partir de la sortie, nous pouvons voir que le segment "autres" s'est vu attribuer des autorisations de lecture tout en perdant les autorisations d'exécution. Cela implique que l'opérateur =attribue de nouvelles autorisations tout en effaçant en même temps les autorisations précédentes.
Exemple 5) Attribuer des autorisations d'exécution au propriétaire du fichier et du groupe
$ sudo chmod ug+x nom de fichier
La commande ci-dessus ajoute des autorisations d'exécution au propriétaire et au groupe du fichier. En utilisant notre fichier, cela devient :
$ sudo chmod ug+x file1.txt
Exemple 6) Attribuer différentes autorisations à un fichier, un groupe et d'autres
$ sudo chmod u=rwx,g=rw,o=r nom de fichier
La commande ci-dessus attribue toutes les autorisations au propriétaire du fichier, les autorisations de lecture et d'écriture au groupe et uniquement les autorisations de lecture aux autres utilisateurs.
REMARQUE : Si aucune autorisation n'est spécifiée après l'opérateur =, toutes les autorisations du segment d'utilisateurs sont supprimées.
Exemple 7) Supprimer toutes les autorisations pour les autres utilisateurs
$ sudo chmod o=nom de fichier
La commande ci-dessus supprime toutes les autorisations du segment utilisateur "autres" pour le fichier spécifié.
La commande a le même effet que la commande ci-dessous :
$ sudo chmod o-rwx nom de fichier
Exemple 8) Attribuer des autorisations à l'aide d'un fichier de référence
Un autre moyen pratique et pratique d'attribuer des autorisations de fichiers consiste à utiliser un fichier de référence. Dans cette méthode, vous utilisez l'option –reference=ref_file pour définir les autorisations d'un fichier afin qu'elles soient identiques à celles d'un autre fichier de référence. Utilisez la syntaxe ci-dessous
$ sudo chmod –reference=ref_file nom du fichier
Par exemple, pour définir les autorisations de fichier de file2.txt afin qu'elles soient identiques à celles de file1.txt, exécutez la commande :
$ sudo chmod --reference=file1.txt file2.txt
Le fichier de référence est file1.txt tandis que file2.txt est le fichier qui prendra les permissions de fichier pour le fichier de référence.
Exemple 9) Attribuer l'autorisation d'exécution aux répertoires uniquement
Supposons que nous ayons un répertoire contenant des fichiers et des sous-répertoires et que nous souhaitions attribuer une autorisation d'exécution uniquement sur les répertoires sans toucher aux fichiers. Donc, cela peut être réalisé en utilisant la commande chmod suivante,
$ chmod a+X *
Si vous avez bien remarqué, nous avons utilisé la majuscule X pour l'autorisation d'exécution, la commande ci-dessus définira l'autorisation d'exécution sur tous les répertoires de notre répertoire de travail actuel.
Conclusion
Cela tire le rideau sur notre sujet. Nous avons examiné la commande chmod et avons vu divers exemples dans lesquels la commande peut être utilisée pour modifier les autorisations de fichiers.