chmod |
Change de mode |
---|---|
Linux | Externe |
Syntaxe
chmod [Options]... modes[,mode]... Fichier... |
chmod [Options]... numeric_mode fichier... |
chmod [Options]... --reference=RFILE fichier... |
chmod [-c] [-f] [-v] [-R] |
chmod --help |
chmod --version |
Paramètres
Nom | Description | |
---|---|---|
numeric_mode | Ce paramètre permet d'indiquer les 3 chiffres de droits d'accès selon les valeurs octal suivant : | |
Valeur | Description | |
0 | Cette valeur permet d'indiquer qu'il n'y aucun droit d'accès de donné. | |
1 | Cette valeur permet d'indiquer qu'il y a seulement un droit d'exécution. | |
2 | Cette valeur permet d'indiquer qu'il y a seulement un droit d'écriture. | |
3 | Cette valeur permet d'indiquer qu'il y a seulement un droit d'exécution et d'écriture. | |
4 | Cette valeur permet d'indiquer qu'il y a seulement un droit de lecture. | |
5 | Cette valeur permet d'indiquer qu'il y a seulement un droit d'exécution et de lecture. | |
6 | Cette valeur permet d'indiquer qu'il y a seulement un droit d'écriture et de lecture. | |
7 | Cette valeur permet d'indiquer qu'il y a tous les droits: lecture, écriture et exécution. | |
-c | Ce paramètre permet d'afficher les détails sur les changements effectués. | |
-f | Ce paramètre permet de ne pas afficher les messages d'erreurs de niveau inférieur. | |
-v | Ce paramètre permet d'afficher le maximum de détails sur les opérations effectués. | |
--changes | Ce paramètre permet d'afficher les détails sur les changements effectués. | |
--help | Ce paramètre permet d'afficher l'aide sur les paramètres et la syntaxe de la commande «chmod». | |
--no-preserve-root | Ce paramètre permet d'indiquer qu'il ne faut pas traité le répertoire racine du système d'exploitation. | |
--preserve-root | Ce paramètre permet d'indiquer qu'interdire le traitement récursif à partir du répertoire racine. | |
--quiet | Ce paramètre permet de ne pas afficher les messages d'erreurs de niveau inférieur. | |
--reference=RFILE | Ce paramètre permet d'indiquer qu'il faut utiliser les mêmes droits d'accès du fichier spécifié. | |
--silent | Ce paramètre permet de ne pas afficher les messages d'erreurs de niveau inférieur. | |
--verbose | Ce paramètre permet d'afficher le maximum de détails sur les opérations effectués. | |
--version | Ce paramètre permet d'afficher le numéro de version du programme «chmod». |
Description
Cette commande permet de changer les droits d'accès d'un fichier ou d'un répertoire.
Remarques
- Attaque de type sushi (su shell) : Attention aux attaques sushi, abréviation de «su shell», laquelle profite du fait qu'un utilisateur «root» crée un fichier exécutable «shell» en laissant les droits d'écritures aux autres niveaux d'utilisateurs inférieur, les autres utilisateurs pourraient donc modifier le fichier et exécuter toutes les commandes qu'ils souhaitent. Pour contourner cette faille de sécurité, la plupart des distributions Linux ne tiendront pas compte du drapeau SUID, et si un utilisateur différent de root modifie le fichier, il remet à 0 le bit de SUID.
- Modifier les permissions avec des valeurs numériques : chmod permet de définir les permissions en utilisant des valeurs octales. Par exemple :
- Modifier les permissions avec des lettres (u, g, o, a) : On peut aussi utiliser des lettres pour modifier les permissions de manière plus intuitive :
- Vérifier les permissions avec ls -l : Avant ou après avoir modifié les permissions, on peut les vérifier avec :
- Ajouter ou enlever les permissions récursivement avec -R : Si on veut modifier les permissions de tous les fichiers et sous-dossiers d'un
répertoire, on utilise -R :
chmod -R 755 mon_dossier Cela applique les permissions à tous les fichiers à l'intérieur du dossier.
- Attention aux permissions 777 (risque de sécurité) : Donner toutes les permissions (rwx) à tout le monde avec chmod 777 peut être dangereux :
- Rendre un script exécutable avec chmod +x : Si un script ne peut pas être exécuté, il faut lui donner le droit d'exécution :
- Utilisation du bit spécial chmod +s, chmod +t : Certains modes spéciaux existent :
- chmod +s fichier → Définit le bit SUID (exécution avec les droits du propriétaire)
- chmod g+s dossier → Définit le bit SGID (les nouveaux fichiers héritent du groupe)
- chmod +t dossier → Définit le bit sticky (les fichiers ne peuvent être supprimés que par leur propriétaire)
- Modifier uniquement certains types de fichiers avec find et chmod : On peut combiner chmod avec find pour modifier uniquement des fichiers spécifiques, par exemple tous les fichiers .sh :
chmod 755 fichier.txt |
Cela accorde lecture, écriture et exécution au propriétaire (7) et lecture et exécution aux autres utilisateurs (5).
chmod u+rwx fichier.txt chmod g-w fichier.txt chmod o+x fichier.txt |
Correspondance des lettres :
Lettre | Description |
---|---|
u | utilisateur (propriétaire) |
g | groupe |
o | autres |
a | tous les utilisateurs |
ls -l fichier.txt |
Cela affiche quelque chose comme :
-rwxr-xr-- 1 user group 1234 Apr 3 12:34 fichier.txt |
Les premières lettres indiquent les permissions actuelles.
chmod 777 fichier.sh |
Cela permet à n'importe qui d'éditer et d'exécuter le fichier, ce qui peut poser un risque de sécurité.
chmod +x script.sh |
Cela permet de l'exécuter directement avec ./script.sh au lieu de passer par bash script.sh.
Exemple d'ajout du bit sticky sur /tmp :
chmod +t /tmp |
Cela empêche les autres utilisateurs de supprimer des fichiers ne leur appartenant pas.
find /mon_dossier -type f -name "*.sh" -exec chmod +x {} \; |
Cela rend tous les fichiers .sh exécutables sans toucher aux autres fichiers.
Exemples
L'exemple suivant permet de changer les permissions des tâches du «cron» :
chmod 4755 /usr/bin/crontab |
L'exemple suivant permet d'autoriser l'exécution du fichier PHP «01simple.php» par le Serveur Web :
chmod +x 01simple.php |
L'exemple suivant permet de changer les droits d'accès pour le fichier «text.txt» pour l'utilisateur «gladir» :
sudo -u gladir chmod 777 text.txt |
L'exemple suivant permet de modifier les permissions du fichier «target.txt» de façon à ce qu'il est les mêmes permissions que le fichier «source.txt» :
chmod --reference=source.txt target.txt |
L'exemple suivant permet d'ajouter la permission d'écrire sur toutes le dossier et ses sous-dossier de «gladir» :
chmod -R a+w gladir |
L'exemple suivant permet d'ajouter des permissions en lecture sur le fichier «test123.jpg» :
chmod a+r test123.jpg |
L'exemple suivant permet de donnée l'accès en écriture aux utilisateurs du groupe et des autres pour le dossier «/var/www» :
chmod go+w /var/www |
Voir également
Système d'exploitation - Linux - Références de commandes et de programmes - chown
Système d'exploitation - Linux - Références de commandes et de programmes - getfacl
Système d'exploitation - Linux - Références de commandes et de programmes - ls
Système d'exploitation - Unix - Références de commandes et de programmes - chmod
Système d'exploitation - XENIX - Références de commandes et de programmes - chmod
Système d'exploitation - MS-DOS 5 - attrib (change les attributs)
Système d'exploitation - MS-DOS 6 - attrib (change les attributs)
Système d'exploitation - OS/2 Warp 3 - attrib (change les attributs)
Système d'exploitation - Windows XP - attrib (change les attributs)
Langage de programmation - C pour Linux - chmod
Langage de programmation - Perl - chmod
Langage de programmation - PHP - chmod
Système d'exploitation - FreeBSD - chmod
Système d'exploitation - Solaris 10 (SunOS) - chmod