Principaux enseignements
- La commande Linux chmod est utilisée pour contrôler les permissions des fichiers, vous permettant de spécifier qui peut accéder aux fichiers, rechercher dans les répertoires et exécuter des scripts.
- Les autorisations de fichiers Linux peuvent être définies pour chaque utilisateur ou appliquées à chaque membre d’un groupe.
- La commande chmod utilise une syntaxe de qui, quoi et quoi pour définir les autorisations. Vous pouvez utiliser des indicateurs tels que u, g, o et a pour spécifier la cible, et les signes + et – pour ajouter ou supprimer des autorisations. Les autorisations sont représentées par r, w et x pour lecture, écriture et exécution.
Contrôlez qui peut accéder aux fichiers, effectuer des recherches dans les répertoires et exécuter des scripts à l’aide de la fonction chmod
de Linux. Cette commande modifie les autorisations de fichiers Linux, qui semblent compliquées à première vue, mais qui sont en fait assez simples une fois que l’on sait comment elles fonctionnent.
chmod modifie les autorisations de fichiers
Sous Linux, les droits d’accès à un fichier ou à un répertoire sont contrôlés par des jeux de permissions. Il existe trois jeux de permissions. Un jeu pour le propriétaire du fichier, un autre pour les membres du groupe du fichier et un dernier pour tous les autres.
Les autorisations contrôlent les actions qui peuvent être effectuées sur le fichier ou le répertoire. Elles permettent 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. Dans le cas d’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 l’option chmod
pour définir chacune de ces autorisations. Pour savoir quelles permissions ont été définies pour un fichier ou un répertoire, nous pouvons utiliser la commande ls
.
Afficher et comprendre les permissions de fichiers
Nous pouvons utiliser la fonction -l
(format long) pour avoir ls
liste les permissions pour les fichiers et les répertoires.
ls -l
Sur chaque ligne, le premier caractère identifie le type d’entrée listée. S’il s’agit d’un tiret (-
), il s’agit d’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 jeux de permissions.
- Les trois premiers caractères indiquent les autorisations de l’utilisateur qui possède le fichier (autorisations de l’utilisateur).
- Les trois caractères du milieu indiquent les autorisations des membres du groupe du fichier (autorisations du groupe).
- Les trois derniers caractères indiquent les autorisations pour toute personne n’appartenant pas aux deux premières catégories (autres autorisations).
Chaque série d’autorisations comporte trois caractères. Ces caractères sont des indicateurs de la présence ou de l’absence d’une des autorisations. Il s’agit soit d’un tiret (-
) ou une lettre. Si le caractère est un tiret, cela signifie que la permission n’est pas accordée. Si le caractère est un r
, w
ou un x
, que l’autorisation a été accordée.
Les lettres représentent :
- r : Permissions de lecture. Le fichier peut être ouvert et son contenu peut être consulté.
- w : Permissions d’écriture. Le fichier peut être édité, modifié et supprimé.
- x : Autorisations d’exécution. Si le fichier est un script ou un programme, il peut être exécuté.
Par exemple :
-
---
signifie qu’aucune autorisation n’a été accordée. -
rwx
signifie que toutes les permissions 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 « dave ».
Les trois caractères suivants correspondent aux droits d’accès de l’utilisateur à ce répertoire. Ils indiquent que le propriétaire dispose de toutes les autorisations. Les trois caractères suivants sont les autorisations de l’utilisateur pour ce répertoire. r
, w
, et x
sont tous présents. Cela signifie que l’utilisateur dave a les droits de lecture, d’écriture et d’exécution pour ce répertoire.
La deuxième série de trois caractères correspond aux autorisations du groupe, à savoir r-x
. Cela signifie que les membres du groupe dave ont les droits de lecture et d’exécution pour ce répertoire. Cela signifie qu’ils peuvent dresser la liste des fichiers et de leur contenu dans le répertoire et qu’ils peuvent cd
(exécuter) dans ce répertoire. Ils n’ont pas les droits d’écriture et ne peuvent donc pas créer, modifier ou supprimer des fichiers.
La dernière série de trois caractères est également r-x
. Ces autorisations s’appliquent aux personnes qui ne sont pas régies par les deux premiers jeux d’autorisations. Ces personnes (appelées « autres ») ont les droits de lecture et d’exécution sur ce répertoire.
En résumé, les membres du groupe et les autres ont les droits de lecture et d’exécution. Le propriétaire, un utilisateur appelé dave, a également des droits d’écriture.
Pour tous les autres fichiers (à l’exception du fichier script mh.sh), dave et les membres du groupe dave ont les droits de lecture et d’écriture sur les fichiers, et les autres n’ont que les droits de lecture.
Pour le cas particulier du fichier script mh.sh, le propriétaire dave et les membres du groupe ont les droits de lecture, d’écriture et d’exécution, et les autres n’ont que les droits de lecture et d’exécution.
Comprendre la syntaxe des permissions
Pour utiliser chmod
pour définir les permissions, nous devons lui dire :
- Qui : La personne pour laquelle nous définissons les autorisations.
- Quoi : Quel changement effectuons-nous ? Ajoutons-nous ou supprimons-nous la permission ?
- Quel : Quelles sont les autorisations que nous définissons ?
Nous utilisons des indicateurs pour représenter ces valeurs et formuler de courtes « déclarations de permissions » telles que u+x
où « u » signifie « user » (qui), « + » signifie ajouter (quoi) et « x » signifie l’autorisation d’exécution (qui).
Les valeurs « who » que nous pouvons utiliser sont les suivantes :
- 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 qui ne sont pas régies par le
u
etg
autorisations. - a : 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 « what » que nous pouvons utiliser sont :
- – : Signe moins. Supprime la permission.
- + : Signe plus. Accorde l’autorisation. L’autorisation est ajoutée aux autorisations existantes. Si vous souhaitez disposer de cette autorisation et uniquement de ce jeu d’autorisations, utilisez l’option
=
décrite ci-dessous. - = : Signe égal. Définir une permission et supprimer les autres.
Les valeurs « which » que nous pouvons utiliser sont :
- r : La permission de lecture.
- w : La permission d’écriture.
- x : Le droit d’exécution.
Définition et modification des autorisations
Supposons que nous ayons un fichier sur lequel tout le monde a toutes les permissions.
ls -l new_ file.txt
Nous voulons que l’utilisateur dave ait les droits de lecture et d’écriture et que le groupe et les autres utilisateurs n’aient que les droits 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 permissions existantes et que nous définissons ensuite celles qui sont spécifiées.
vérifions la nouvelle permission sur ce fichier :
ls -l new_file.txt
Les permissions existantes ont été supprimées et les nouvelles permissions ont été définies, comme prévu.
Pourquoi ne pas ajouter une permission sans supprimer les paramètres des permissions existantes ? Nous pouvons aussi le faire facilement.
Supposons que nous ayons un fichier script que nous avons fini d’éditer. Nous devons le rendre exécutable pour tous les utilisateurs. Ses permissions actuelles sont les suivantes :
ls -l new_script.sh
Nous pouvons ajouter la permission d’exécution pour tout le monde avec la commande suivante :
chmod a+x new_script.sh
Si nous regardons les permissions, nous verrons que la permission d’exécuter est maintenant accordée à tout le monde, et que les permissions existantes sont toujours en place.
ls -l new_script.sh
Nous aurions pu réaliser la même chose sans le « a » de l’instruction « a+x ». La commande suivante aurait tout aussi bien fonctionné.
chmod +x new_script.sh
Définition des autorisations pour plusieurs fichiers
Il est possible d’appliquer des autorisations à plusieurs fichiers à la fois.
Voici les fichiers qui se trouvent dans le répertoire actuel :
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
Vérifions l’effet que cela a eu :
ls -l
Comme nous pouvons le voir, l’autorisation de lecture a été retirée des fichiers « .page » pour la catégorie d’utilisateurs « other ». Aucun autre fichier n’a été affecté.
Si nous avions voulu inclure des fichiers dans des sous-répertoires, nous aurions pu utiliser l’option -R
(récursif).
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 aux autres sous la forme d’un nombre à trois chiffres. Le chiffre le plus à gauche représente les autorisations pour le 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 énumérés ici :
- 0 : (000) Pas de permission.
- 1 : (001) Permission d’exécution.
- 2 : (010) Autorisation d’écriture.
- 3 : (011) Permissions d’écriture et d’exécution.
- 4 : (100) Permission de lecture.
- 5 : (101) Permissions de lecture et d’exécution.
- 6 : (110) Permissions 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. Ainsi, 5, qui vaut 101 en binaire, signifie lecture et exécution. 2, qui est 010 en binaire, signifie l’autorisation d’écriture.
En utilisant cette méthode, vous définissez les autorisations que vous souhaitez avoir ; vous n’ajoutez pas ces autorisations à celles qui existent déjà. Ainsi, si les autorisations de lecture et d’écriture sont déjà en place, vous devez utiliser 7 (111) pour ajouter les 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 l’autorisation de lecture sur les fichiers « .page » pour les autres catégories d’utilisateurs. Nous devons également définir les permissions de l’utilisateur et du groupe, donc nous devons les définir comme elles le sont déjà. Ces utilisateurs ont déjà les droits de lecture et d’écriture, soit 6 (110). Nous voulons que les « autres » aient des droits de lecture et d’écriture, ils doivent donc être réglés sur 4 (100).
La commande suivante permet de réaliser cette opération :
chmod 664 *.page
Cette opération définit les autorisations requises pour l’utilisateur, les membres du groupe et les autres utilisateurs. Les utilisateurs et les membres du groupe voient leurs permissions réinitialisées à ce qu’elles étaient déjà, et les autres voient leurs permissions de lecture restaurées.
ls -l
Options avancées
Si vous lisez la page de manuel de chmod
vous verrez qu’il y a des options avancées liées aux bits SETUID et SETGID, et au bit de suppression restreinte ou « sticky ».
Dans 99% des cas, vous aurez besoin de chmod
les options décrites ici vous couvriront.
Le processus s’est terminé avec le code de sortie 0