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 chmodcommande 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 cdaccéder au répertoire et qui peut créer ou modifier des fichiers dans le répertoire.

Vous utilisez la  chmod commande pour définir chacune de ces autorisations. Pour 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' -loption (format long) pour avoir la lsliste des autorisations de fichiers pour les fichiers et les répertoires.

ls -l

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 personnage est un r, wou 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é).

Par exemple:

  •  --- signifie qu'aucune autorisation n'a été accordée du tout.
  •  rwxsignifie que toutes les autorisations 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 r, wet les xpersonnages 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 ensemble de trois caractères correspond aux autorisations de groupe, ce sont r-x. Celles-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 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 le sont également  r-x. 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?
  • Laquelle : 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 (laquelle) .

Les valeurs «qui» que nous pouvons utiliser sont:

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

Si aucun de ceux-ci n'est utilisé, chmodse 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 nouveau_ fichier.txt

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 nouveau_fichier.txt

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

vérifions la nouvelle autorisation sur ce fichier:

ls -l nouveau_fichier.txt

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 terminé de modifier. Nous devons le rendre exécutable pour tous les utilisateurs. Ses autorisations actuelles ressemblent à ceci:

ls -l nouveau_script.sh

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

chmod a + x nouveau_script.sh

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 nouveau_script.sh

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 nouveau_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

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 ou * .page

Vérifions quel effet cela a eu:

ls -l

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é.

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

chmod -R ou * .page

Sténographie numérique

Une autre façon d'utiliser chmodest de fournir les autorisations que vous souhaitez donner au propriétaire, au groupe et à d'autres sous la forme d'un numéro à 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

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

Options avancées

Si vous lisez la page de manuel, chmodvous 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 dont vous aurez besoin chmod, les options décrites ici vous couvriront.