Linux Tutoriels

Comment utiliser la commande chmod sous Linux

Contrôlez qui peut accéder aux fichiers, rechercher des répertoires et exécuter des scripts à l’aide de la commande chmod de Linux. Cette commande modifie les autorisations de fichiers Linux, qui semblent compliquées à première vue mais sont en fait assez simples une fois que vous savez comment elles fonctionnent.

chmod modifie les autorisations de fichier

Sous Linux, qui peut faire quoi sur un fichier ou un répertoire est contrôlé par des ensembles d’autorisations. Il existe trois ensembles d’autorisations. Un ensemble pour le propriétaire du fichier, un autre ensemble pour les membres du groupe du fichier et un ensemble final pour tous les autres.

Les autorisations contrôlent les actions qui peuvent être effectuées sur le fichier ou le répertoire. Ils permettent ou empêchent un fichier d’être lu, modifié ou, s’il s’agit d’un script ou d’un programme, exécuté. Pour un répertoire, les autorisations déterminent qui peut accéder au répertoire et qui peut créer ou modifier des fichiers dans le répertoire.

Vous utilisez la commande chmod pour définir chacune de ces autorisations. À voir quelles autorisations ont été définies sur un fichier ou un répertoire, nous pouvons utiliser ls.

Affichage et compréhension des autorisations de fichiers

Nous pouvons utiliser l’option -l (format long) pour que ls répertorie les droits d’accès aux fichiers et répertoires.

ls -l

sortie de ls -l dans une fenêtre de terminal

Sur chaque ligne, le premier caractère identifie le type d’entrée répertorié. S’il s’agit d’un tiret (-), c’est un fichier. Si c’est la lettre d, c’est un répertoire.

Les neuf caractères suivants représentent les paramètres des trois ensembles d’autorisations.

Les trois premiers caractères indiquent les autorisations de l’utilisateur propriétaire du fichier (autorisations de l’utilisateur).
Les trois caractères du milieu indiquent les autorisations des membres du groupe du fichier (autorisations de groupe).
Les trois derniers caractères indiquent les autorisations de toute personne n’appartenant pas aux deux premières catégories (autres autorisations).

Il y a trois caractères dans chaque ensemble d’autorisations. Les caractères sont des indicateurs de la présence ou de l’absence de l’une des autorisations. Ils sont soit un tiret (-), soit une lettre. Si le caractère est un tiret, cela signifie que l’autorisation n’est pas accordée. Si le caractère est un r, w ou un x, cette autorisation a été accordée.

Les lettres représentent:

r: autorisations de lecture. Le fichier peut être ouvert et son contenu affiché.
w: autorisations d’écriture. Le fichier peut être édité, modifié et supprimé.
x: Exécuter les autorisations. Si le fichier est un script ou un programme, il peut être exécuté (exécuté).

  Comment utiliser l'outil de capture d'écran Chrome pour capturer des pages Web

Par exemple:

– signifie qu’aucune autorisation n’a été accordée du tout.
rwx signifie que les autorisations complètes ont été accordées. Les indicateurs de lecture, d’écriture et d’exécution sont tous présents.

Dans notre capture d’écran, la première ligne commence par un d. Cette ligne fait référence à un répertoire appelé «archive». Le propriétaire du répertoire est «dave» et le nom du groupe auquel appartient le répertoire est également appelé «dave».

Les trois caractères suivants sont les autorisations utilisateur pour ce répertoire. Celles-ci montrent que le propriétaire dispose des autorisations complètes. Les caractères r, w et x sont tous présents. Cela signifie que l’utilisateur dave dispose des droits de lecture, d’écriture et d’exécution pour ce répertoire.

Le deuxième jeu de trois caractères correspond aux autorisations de groupe, ce sont rx. Ceux-ci montrent que les membres du groupe dave ont des autorisations de lecture et d’exécution pour ce répertoire. Cela signifie qu’ils peuvent lister les fichiers et leur contenu dans le répertoire, et qu’ils peuvent cd (exécuter) dans ce répertoire. Ils ne disposent pas des autorisations d’écriture et ne peuvent donc pas créer, modifier ou supprimer des fichiers.

L’ensemble final de trois caractères est également rx. Ces autorisations s’appliquent aux personnes qui ne sont pas régies par les deux premiers ensembles d’autorisations. Ces personnes (appelées «autres») ont des droits de lecture et d’exécution sur ce répertoire.

Donc, pour résumer, les membres du groupe et d’autres ont des autorisations de lecture et d’exécution. Le propriétaire, un utilisateur appelé Dave, dispose également des autorisations d’écriture.

Pour tous les autres fichiers (à l’exception du fichier de script mh.sh), dave et les membres du groupe dave ont des propriétés de lecture et d’écriture sur les fichiers, et les autres ont des autorisations de lecture uniquement.

Dans le cas particulier du fichier de script mh.sh, le propriétaire dave et les membres du groupe ont des autorisations de lecture, d’écriture et d’exécution, et les autres ont des autorisations de lecture et d’exécution uniquement.

Comprendre la syntaxe des autorisations

Pour utiliser chmod pour définir les autorisations, nous devons lui dire:

Qui: Pour qui nous définissons les autorisations.
Quoi: Quel changement faisons-nous? Ajoutons-nous ou supprimons-nous l’autorisation?
Lequel: Lesquelles des autorisations définissons-nous?

Nous utilisons des indicateurs pour représenter ces valeurs et formons de courtes «instructions d’autorisations» telles que u + x, où «u» signifie «utilisateur» (qui), «+» signifie ajouter (quoi) et «x» signifie l’autorisation d’exécution (lequel).

  Comment ouvrir des dossiers dans la nouvelle fenêtre de l'Explorateur de fichiers sous Windows 10

Les valeurs «qui» que nous pouvons utiliser sont:

u: Utilisateur, c’est-à-dire le propriétaire du fichier.
g: Groupe, c’est-à-dire les membres du groupe auquel appartient le fichier.
o: Autres, c’est-à-dire les personnes non régies par les autorisations u et g.
a: Tous, c’est-à-dire tout ce qui précède.

Si aucun de ceux-ci n’est utilisé, chmod se comporte comme si «a» avait été utilisé.

Les valeurs «quoi» que nous pouvons utiliser sont:

-: Signe moins. Supprime l’autorisation.
+: Signe plus. Accorde la permission. L’autorisation est ajoutée aux autorisations existantes. Si vous souhaitez avoir cette autorisation et uniquement cet ensemble d’autorisations, utilisez l’option =, décrite ci-dessous.
=: Signe égal. Définissez une autorisation et supprimez les autres.

Les «quelles» valeurs que nous pouvons utiliser sont:

r: l’autorisation de lecture.
w: l’autorisation d’écriture.
x: l’autorisation d’exécution.

Définition et modification des autorisations

Disons que nous avons un fichier sur lequel tout le monde dispose des autorisations complètes.

ls -l new_ file.txt

ls -l nouveau_fichier.txt dans une fenêtre de terminal

Nous voulons que l’utilisateur dave ait des autorisations de lecture et d’écriture et que le groupe et les autres utilisateurs aient uniquement des autorisations de lecture. Nous pouvons le faire en utilisant la commande suivante:

chmod u=rw,og=r new_file.txt

chmod u = rw, og = r new_file.txt dans une fenêtre de terminal

L’utilisation de l’opérateur «=» signifie que nous effaçons toutes les autorisations existantes, puis définissons celles spécifiées.

vérifions la nouvelle autorisation sur ce fichier:

ls -l new_file.txt

ls -l nouveau_fichier.txt dans une fenêtre de terminal

Les autorisations existantes ont été supprimées et les nouvelles autorisations ont été définies, comme prévu.

Que diriez-vous d’ajouter une autorisation sans supprimer les paramètres d’autorisations existants? Nous pouvons le faire aussi facilement.

Disons que nous avons un fichier de script que nous avons fini de modifier. Nous devons le rendre exécutable pour tous les utilisateurs. Ses autorisations actuelles ressemblent à ceci:

ls -l new_script.sh

ls -l new_script.sh dans une fenêtre de terminal

Nous pouvons ajouter l’autorisation d’exécution pour tout le monde avec la commande suivante:

chmod a+x new_script.sh

chmod a + x new_script.sh dans une fenêtre de terminal

Si nous examinons les autorisations, nous verrons que l’autorisation d’exécution est désormais accordée à tout le monde et que les autorisations existantes sont toujours en place.

ls -l new_script.sh

ls -l new_script.sh dans une fenêtre de terminal

Nous aurions pu réaliser la même chose sans le «a» dans l’instruction «a + x». La commande suivante aurait tout aussi bien fonctionné.

chmod +x new_script.sh

Définition des autorisations pour plusieurs fichiers

Nous pouvons appliquer des autorisations à plusieurs fichiers à la fois.

Voici les fichiers du répertoire courant:

ls -l

ls -l dans une fenêtre de terminal

Disons que nous voulons supprimer les autorisations d’écriture pour les «autres» utilisateurs des fichiers qui ont une extension «.page». Nous pouvons le faire avec la commande suivante:

chmod o-r *.page

chmod ou * .page dans une fenêtre de terminal

Vérifions quel effet cela a eu:

ls -l

ls -l dans une fenêtre de terminal

Comme nous pouvons le voir, l’autorisation de lecture a été supprimée des fichiers «.page» pour la catégorie «autre» d’utilisateurs. Aucun autre fichier n’a été affecté.

  5 alternatives Microsoft Powerpoint pour les utilisateurs Linux

Si nous avions voulu inclure des fichiers dans des sous-répertoires, nous aurions pu utiliser l’option -R (récursive).

chmod -R o-r *.page

Sténographie numérique

Une autre façon d’utiliser chmod est de fournir les autorisations que vous souhaitez donner au propriétaire, au groupe et à d’autres sous la forme d’un nombre à trois chiffres. Le chiffre le plus à gauche représente les autorisations du propriétaire. Le chiffre du milieu représente les autorisations des membres du groupe. Le chiffre le plus à droite représente les autorisations pour les autres.

Les chiffres que vous pouvez utiliser et ce qu’ils représentent sont répertoriés ici:

0: (000) Aucune permission.
1: (001) Exécuter l’autorisation.
2: (010) Autorisation d’écriture.
3: (011) Droits d’écriture et d’exécution.
4: (100) Autorisation de lecture.
5: (101) Lire et exécuter les autorisations.
6: (110) Droits de lecture et d’écriture.
7: (111) Droits de lecture, d’écriture et d’exécution.

Chacune des trois autorisations est représentée par l’un des bits de l’équivalent binaire du nombre décimal. Donc 5, qui est 101 en binaire, signifie lire et exécuter. 2, qui est 010 en binaire, signifierait l’autorisation d’écriture.

En utilisant cette méthode, vous définissez les autorisations que vous souhaitez avoir; vous n’ajoutez pas ces autorisations aux autorisations existantes. Donc, si les autorisations de lecture et d’écriture étaient déjà en place, vous devrez utiliser 7 (111) pour ajouter des autorisations d’exécution. L’utilisation de 1 (001) supprimerait les autorisations de lecture et d’écriture et ajouterait l’autorisation d’exécution.

Ajoutons la permission de lecture sur les fichiers «.page» pour les autres catégories d’utilisateurs. Nous devons également définir les autorisations des utilisateurs et des groupes, nous devons donc les définir sur ce qu’elles sont déjà. Ces utilisateurs ont déjà des autorisations de lecture et d’écriture, soit 6 (110). Nous voulons que les «autres» aient la lecture et les autorisations, ils doivent donc être définis sur 4 (100).

La commande suivante accomplira ceci:

chmod 664 *.page

chmod 664 * .page dans une fenêtre de terminal

Cela définit les autorisations dont nous avons besoin pour l’utilisateur, les membres du groupe et autres selon ce dont nous avons besoin. Les utilisateurs et les membres du groupe ont leurs autorisations réinitialisées à ce qu’elles étaient déjà, et les autres ont la permission de lecture restaurée.

ls -l

ls -l dans une fenêtre de terminal

Options avancées

Si vous lire la page de manuel pour chmod, vous verrez qu’il existe des options avancées liées aux bits SETUID et SETGID, et à la suppression restreinte ou le bit «sticky».

Pour 99% des cas pour lesquels vous aurez besoin de chmod, les options décrites ici vous couvriront.