Chmod prend trois arguments principaux : r, w et x, qui signifient respectivement lecture, écriture et exécution. L’ajout ou la suppression de combinaisons d’arguments contrôle les autorisations de fichiers et de dossiers. Par exemple, chmod +rwx ajoute l’autorisation de lire, d’écrire et d’exécuter des scripts. L’exécution de chmod -wx supprime la possibilité d’écrire et d’exécuter.
Contrôlez qui peut accéder aux fichiers, rechercher des répertoires et exécuter des scripts à l’aide de Linux chmod
commande. 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 fichiers
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 dernier ensemble pour tous les autres.
Les autorisations contrôlent les actions qui peuvent être effectuées sur le fichier ou le répertoire. Ils autorisent ou empêchent la lecture, la modification ou, s’il s’agit d’un script ou d’un programme, l’exécution d’un fichier. Pour un répertoire, les autorisations déterminent qui peut cd
dans le répertoire et qui peut créer ou modifier des fichiers dans le répertoire.
Vous utilisez le 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 le -l
(format long) possibilité d’avoir ls
répertorier les 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é. Si c’est 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 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 pour 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 (-
) ou 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
, 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 visualisé.
- 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 lancé (exécuté).
Par exemple:
-
---
signifie qu’aucune autorisation n’a été accordée. -
rwx
signifie 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 de l’utilisateur pour ce répertoire. Ceux-ci montrent que le propriétaire a toutes les autorisations. La r
, w
et x
les personnages sont tous présents. Cela signifie que l’utilisateur dave dispose des autorisations de lecture, d’écriture et d’exécution pour ce répertoire.
Le deuxième ensemble de trois caractères sont les autorisations de groupe, ce sont r-x
. 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 ils peuvent cd
(exécuter) dans ce répertoire. Ils ne disposent pas d’autorisations d’écriture, ils ne peuvent donc pas créer, modifier ou supprimer des fichiers.
Le dernier ensemble de trois personnages est é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 autorisations de lecture et d’exécution sur ce répertoire.
Donc, pour résumer, les membres du groupe et les autres ont des autorisations de lecture et d’exécution. Le propriétaire, un utilisateur appelé dave, dispose également d’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 n’ont que des autorisations de lecture.
Pour 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 uniquement des autorisations de lecture et d’exécution.
Comprendre la syntaxe des autorisations
Utiliser chmod
pour définir les autorisations, nous devons lui dire :
- Qui: Pour qui nous définissons des autorisations.
- Quoi: Quel changement apportons-nous ? Sommes-nous en train d’ajouter ou de supprimer l’autorisation ?
- Qui: Lesquelles des autorisations définissons-nous ?
Nous utilisons des indicateurs pour représenter ces valeurs et formons de courtes « déclarations d’autorisations » telles que u+x
où « u » signifie « utilisateur » (qui), « + » signifie ajouter (quoi) et « x » signifie l’autorisation d’exécution (qui).
Les valeurs « qui » que nous pouvons utiliser sont :
- tu: 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 la
u
etg
autorisations. - un: Tous, c’est-à-dire tout ce qui précède.
Si aucun de ces éléments 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 l’autorisation. L’autorisation est ajoutée aux autorisations existantes. Si vous souhaitez disposer de cette autorisation et uniquement de cet ensemble d’autorisations, utilisez la
=
option décrite ci-dessous. - =: signe égal. Définissez une autorisation et supprimez les autres.
Les valeurs « quelles » 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 de toutes les autorisations.
ls -l new_ file.txt
Nous voulons que l’utilisateur dave ait des autorisations de lecture et d’écriture et que le groupe et les autres utilisateurs n’aient que des autorisations de lecture. Nous pouvons le faire en utilisant la commande suivante :
chmod u=rw,og=r new_file.txt
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
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 pour autant supprimer les paramètres d’autorisations existants ? Nous pouvons le faire facilement aussi.
Disons que nous avons un fichier de script que nous avons fini d’éditer. Nous devons le rendre exécutable pour tous les utilisateurs. Ses autorisations actuelles ressemblent à ceci :
ls -l new_script.sh
Nous pouvons ajouter l’autorisation d’exécution pour tout le monde avec la commande suivante :
chmod a+x new_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 new_script.sh
Nous aurions pu obtenir la même chose sans le « a » dans la déclaration « 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.
Ce sont les fichiers dans le répertoire courant :
ls -l
Supposons que nous voulions supprimer les autorisations de lecture pour les « autres » utilisateurs des fichiers ayant une extension « .page ». Nous pouvons le faire avec la commande suivante :
chmod o-r *.page
Voyons 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 le -R
option (récursive).
chmod -R o-r *.page
Raccourci numérique
Une autre façon d’utiliser chmod
consiste à fournir les autorisations que vous souhaitez accorder 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 pour les 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 autorisation.
- 1 : (001) Exécuter l’autorisation.
- 2 : (010) Autorisation d’écriture.
- 3 : (011) Autorisations d’écriture et d’exécution.
- 4 : (100) Autorisation de lecture.
- 5 : (101) Autorisations de lecture et d’exécution.
- 6 : (110) Autorisations de lecture et d’écriture.
- 7 : (111) Autorisations de lecture, d’écriture et d’exécution.
Chacune des trois autorisations est représentée par l’un des bits dans 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.
Rajoutons l’autorisation de lecture sur les fichiers « .page » pour les autres catégories d’utilisateurs. Nous devons également définir les autorisations d’utilisateur et de groupe, nous devons donc les définir sur ce qu’elles sont déjà. Ces utilisateurs disposent déjà d’autorisations de lecture et d’écriture, soit 6 (110). Nous voulons que les « autres » aient accès à la lecture et aux autorisations, ils doivent donc être définis sur 4 (100).
La commande suivante accomplira cela :
chmod 664 *.page
Cela définit les autorisations dont nous avons besoin pour l’utilisateur, les membres du groupe et les autres sur ce dont nous avons besoin. Les utilisateurs et les membres du groupe voient leurs autorisations réinitialisées à ce qu’elles étaient déjà, et les autres ont l’autorisation de lecture restaurée.
ls -l
Options avancées
Si vous lisez 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 au bit « collant ».
Dans 99% des cas, vous aurez besoin chmod
car, les options décrites ici vous couvriront.