Commande chmod Linux
Encyclopédie des commandes Linux
La commande Linux chmod (forme complète en anglais : change mode) est une commande qui contrôle les permissions des utilisateurs sur les fichiers.
chmod (change mode) est une commande des systèmes Linux utilisée pour modifier les permissions des fichiers ou des répertoires. Elle contrôle les permissions d'accès au fichier du propriétaire, du groupe propriétaire et des autres utilisateurs.
Seul le propriétaire du fichier et le superutilisateur peuvent modifier les permissions d'un fichier ou d'un répertoire.
Les permissions d'accès aux fichiers sous Linux/Unix sont divisées en trois niveaux : le propriétaire du fichier (Owner), le groupe d'utilisateurs (Group) et les autres utilisateurs (Other Users).

Vous pouvez utiliser le mode absolu (mode numérique octal) et le mode symbolique pour spécifier les permissions de fichier.

Permission d'utilisation: Tous les utilisateurs
Syntaxe
chmod [选项] 权限模式 文件... chmod [选项] --reference=参考文件 文件...
Options courantes
- -c : Afficher l'action de modification uniquement si la permission du fichier a réellement été modifiée
- -f : Ne pas afficher de messages d'erreur si les permissions du fichier ne peuvent pas être modifiées
- -v : Afficher des informations détaillées sur les modifications de permissions
- -R : Appliquer les mêmes modifications de permissions à tous les fichiers et sous-répertoires du répertoire courant (c'est-à-dire les modifier un par un de manière récursive)
- --help : Afficher les informations d'aide
- --version : Afficher la version
mode : Chaîne de définition des permissions, le format est le suivant :
Modes de permission
1. Mode symbolique (permission ugoa+/-)
[ugoa...][[+-=][rwxX]...][,...]
Où :
- u représente le propriétaire du fichier, g représente les utilisateurs appartenant au même groupe que le propriétaire du fichier, o représente les autres, et a représente les trois.
- + signifie ajouter une permission, - signifie supprimer une permission, = signifie définir la permission de manière unique.
- r signifie lisible, w signifie inscriptible, x signifie exécutable, X signifie uniquement lorsque le fichier est un sous-répertoire ou que le fichier a déjà été défini comme exécutable.
En mode symbolique, plusieurs éléments peuvent être définis : who (type d'utilisateur), opérateur et permission. Les paramètres de chaque élément peuvent être séparés par des virgules.
La commande chmod modifiera les permissions d'accès au fichier pour les types d'utilisateurs spécifiés par who. Le type d'utilisateur est indiqué par une ou plusieurs lettres à la position who, comme indiqué dans le tableau du mode symbolique who :
| who | Type d'utilisateur | Description |
|---|---|---|
| u | user | Propriétaire du fichier |
| g | group | Groupe du propriétaire du fichier |
| o | autres | Tous les autres utilisateurs |
| a | all | Tous les utilisateurs, équivalent àugo |
Tableau du mode symbolique pour l'opérateur :
| Operator | Description |
|---|---|
| + | Ajouter la permission au type d'utilisateur spécifié |
| - | Retirer la permission du type d’utilisateur spécifié |
| = | Définir les permissions pour le type d’utilisateur spécifié, c’est-à-dire réinitialiser toutes les permissions du type d’utilisateur |
Types d’autorisations :
| Mode | Name | Description |
|---|---|---|
| r | read | Définir comme permission de lecture |
| w | write | Définir comme permission d’écriture |
| x | Permission d’exécution | Définir comme permission d’exécution |
| X | Permission d’exécution spéciale | Définir la permission du fichier comme exécutable uniquement lorsque le fichier est un fichier de type répertoire, ou lorsque d’autres types d’utilisateurs ont la permission d’exécution |
| s | setuid/gid | Lorsque le fichier est exécuté, définir la permission setuid ou setgid du fichier selon le type d’utilisateur spécifié par le paramètre who |
| t | Bit sticky | Définir le bit sticky. Seul le superutilisateur peut définir ce bit, et seul le propriétaire du fichier u peut utiliser ce bit. |
2. Syntaxe octale
La commande chmod peut utiliser des nombres octaux pour spécifier les permissions.
| Number | Autorisation |
|---|---|
| 4 | Lecture (r) |
| 2 | Écriture (w) |
| 1 | Exécution (x) |
Combinaison:
- Permission du propriétaire (premier chiffre)
- Permission du groupe (deuxième chiffre)
- Permission des autres utilisateurs (troisième chiffre)
Combinaisons courantes:
- 755:
rwxr-xr-x - 644:
rw-r--r-- - 700:
rwx------
Les bits de permission d'un fichier ou d'un répertoire sont contrôlés par 9 bits de permission, chaque groupe de trois bits représente les permissions de lecture, d'écriture et d'exécution du propriétaire du fichier (User), la lecture, l'écriture et l'exécution du groupe (Group), et la lecture, l'écriture et l'exécution des autres utilisateurs (Other).
| # | Autorisation | rwx | Binary |
|---|---|---|---|
| 7 | Lecture + Écriture + Exécution | rwx | 111 |
| 6 | Lecture + Écriture | rw- | 110 |
| 5 | Lecture + Exécution | r-x | 101 |
| 4 | Lecture seule | r-- | 100 |
| 3 | Écriture + Exécution | -wx | 011 |
| 2 | Écriture seule | -w- | 010 |
| 1 | Exécution uniquement | --x | 001 |
| 0 | Aucune | --- | 000 |
Par exemple, 765 serait interprété comme suit :
- L'autorisation du propriétaire est exprimée en chiffres : la somme des chiffres des trois bits d'autorisation du propriétaire. Par exemple, rwx signifie 4+2+1, ce qui doit donner 7.
- L'autorisation du groupe est exprimée en chiffres : la somme des chiffres des bits d'autorisation du groupe. Par exemple, rw- signifie 4+2+0, ce qui doit donner 6.
- L'autorisation des autres utilisateurs est exprimée en chiffres : la somme des chiffres des bits d'autorisation des autres utilisateurs. Par exemple, r-x signifie 4+0+1, ce qui doit donner 5.
Exemples
Rendre file1.txt lisible par tout le monde :
chmod ugo+r file1.txt
Rendre file1.txt lisible par tout le monde :
chmod a+r file1.txt
Configurer file1.txt et file2.txt pour que le propriétaire du fichier et les personnes du même groupe puissent écrire, mais que les autres ne puissent pas écrire :
chmod ug+w,o-w file1.txt file2.txt
Ajouter la permission d'exécution pour le propriétaire du fichier ex1.py :
chmod u+x ex1.py
Rendre tous les fichiers et sous-répertoires du répertoire courant lisibles par tout le monde :
chmod -R a+r *
De plus, chmod peut aussi utiliser des nombres pour représenter les permissions, par exemple :
chmod 777 file
La syntaxe est :
chmod abc file
Où a, b, c sont chacun un nombre, représentant respectivement les permissions de User, Group et Other.
r=4,w=2,x=1
- Pour les attributs rwx, 4+2+1=7 ;
- Pour les attributs rw-, 4+2=6 ;
- Pour les attributs r-x, 4+1=5.
chmod a=rwx file
et
chmod 777 file
L'effet est identique
chmod ug=rwx,o=x file
et
chmod 771 file
L'effet est identique
Si l'on utilisechmod 4755 filenamecela peut donner au programme les privilèges root.
Remarques supplémentaires
| Commande | Description |
|---|---|
| chmod a+r file | Ajouter la permission de lecture à tous les utilisateurs pour le fichier |
| chmod a-x file | Supprimer la permission d'exécution à tous les utilisateurs pour le fichier |
| chmod a+rw file | Ajouter les permissions de lecture et d'écriture à tous les utilisateurs pour le fichier |
| chmod +rwx file | Ajouter les permissions de lecture, d'écriture et d'exécution à tous les utilisateurs pour le fichier |
| chmod u=rw,go= file | Définir la permission de lecture et d'écriture pour le propriétaire du fichier, et supprimer toutes les permissions pour le groupe et les autres utilisateurs sur le fichier (un espace représente l'absence de permission) |
| chmod -R u+r,go-r docs | Ajouter la permission de lecture pour l'utilisateur à tous les fichiers dans le répertoire docs et sa hiérarchie de sous-répertoires, et supprimer la permission de lecture pour le groupe et les autres utilisateurs |
| chmod 664 file | Définir les droits de lecture et d'écriture pour le propriétaire et le groupe du fichier, et définir le droit de lecture pour les autres utilisateurs |
| chmod 0755 file | Équivalent àu=rwx (4+2+1),go=rx (4+1 & 4+1)。0Aucun mode spécial. |
| chmod 4755 file | 4Le bit set-user-ID est défini, et le reste est équivalent à u=rwx (4+2+1), go=rx (4+1 & 4+1). |
| find path/ -type d -exec chmod a-x {} \; | Supprimer le droit d'exécution pour tous les utilisateurs sur path/ et tous ses répertoires (sans inclure les fichiers) ; utilisez '-type f' pour cibler les fichiers. |
| find path/ -type d -exec chmod a+x {} \; | Autoriser tous les utilisateurs à parcourir ou traverser le répertoire path/ |