Commande chmod
Fonction
Cette commande permet de modifier les modes d'ouverture de fichier.
Syntaxe
Pour modifier symboliquement les modes de fichier
chmod [ -R ] [ -h ]
[ -f
] [ [ u ] [ g ] [ o
] | [ a ]
] { { - | + | = } [ r ] [ w ] [ x ] [ X
] [ s ] [
t ] } { Fichier ... | Répertoire ... }
Pour modifier numériquement les modes de fichier
chmod [ -R ] [ -h ]
[ -f
] CodeDroitAccès { Fichier ...
| Répertoire ... }
Description
La commande chmod modifie les bits de mode et les listes de contrôle d'accès (LCA) étendues des fichiers et répertoires spécifiés.
Le mode peut être défini symboliquement ou numériquement (mode absolu).
Si un lien symbolique est détecté et que vous n'avez pas défini l'option -h, la commande chmod modifie le mode du fichier ou du répertoire auquel fait référence le lien, plutôt que celui du lien. Si vous définissez l'option -h, la commande chmod empêche ce changement de mode.
Si vous spécifiez à la fois l'option -h et l'option -R, la commande chmod explore les répertoires indiqués de manière récursive ; lorsqu'un lien symbolique est identifié, le mode du fichier ou du répertoire auquel fait référence le lien n'est pas modifié.
Options
|
-f |
Supprime le relevé des erreurs, à l'exception des droits non valides et des instructions de règles de confidentialité. |
|
-h |
Supprime un changement de mode du fichier ou du répertoire auquel fait référence le lien symbolique identifié.
Remarque :
Ce comportement est légèrement différent de celui de l'option -h dans les commandes chgrp et chown, car il est impossible de définir les bits de mode sur les liens symboliques. |
|
-R |
N'explore que les répertoires de manière récursive, ainsi que l'indique le modèle Fichier...|Répertoire.... L'option -R modifie les bits de mode des fichiers dans chaque répertoire et pour tous les fichiers correspondant au modèle défini. Voir exemple 6.
Si un lien symbolique est détecté et qu'il pointe vers un répertoire, les bits de mode de fichier de ce répertoire sont modifiés, mais le répertoire n'est plus traversé. |
Mode symbolique
Pour définir un mode au format symbolique, vous devez spécifier trois ensembles d'options.
Remarque :
Ne séparez pas les options par des espaces.
Le premier ensemble d'options définit les utilisateurs à qui ont été accordés ou refusés les droits indiqués, comme suit :
|
u |
Propriétaire du fichier. |
|
g |
Entrées du groupe et de la liste LCA étendue relatives au groupe du fichier. |
|
o |
Tous les autres droits. |
|
a |
Droits utilisateur, groupe, ainsi que tous les autres droits. L'option a a le même effet que la définition conjointe des options ugo.
Si aucune de ces options n'est définie, l'option par défaut correspond à a et le masque de création de fichier (umask) est appliqué. |
Le deuxième ensemble d'options indique si les droits doivent être supprimés, appliqués ou définis :
|
- |
Supprime les droits indiqués. |
|
+ |
Applique les droits indiqués. |
|
= |
Efface la zone de droit sélectionnée et active le droit défini. Si vous ne spécifiez pas de droit après =, la commande chmod supprime tous les droits de la zone sélectionnée. |
Le troisième ensemble d'options définit les droits à supprimer, appliquer ou activer :
|
r |
Droit de lecture. |
|
w |
Droit d'accès en écriture. |
|
x |
Droit d'exécution pour les fichiers, droit de recherche pour les répertoires. |
|
X |
Droit d'exécution pour les fichiers si au moins un des bits d'exécution utilisateur, groupe ou autre est défini dans les bits de mode en cours (non modifiés). L'option X n'est pas prise en compte si le paramètre Fichier est spécifié et qu'aucun des bits d'exécution n'est défini dans les bits de mode en cours.
Droit de recherche pour les répertoires. |
|
s |
Droit de définition de l'identificateur utilisateur lors de l'exécution si l'option u est spécifiée ou implicite. Droit de définition de l'identificateur du groupe lors de l'exécution si l'option g est spécifiée ou implicite. |
|
t |
Pour les répertoires, indique que seuls les propriétaires de fichier peuvent activer ou désactiver les liens avec les fichiers dans le répertoire défini. Pour les fichiers, définit l'attribut save-text. |
Mode numérique ou absolu
La commande chmod vous permet également d'utiliser la notation octale du mode. Le mode numérique est la somme d'une ou de plusieurs valeurs, comme suit :
|
4000 |
Définit l'identificateur utilisateur lors de l'exécution. |
|
2000 |
Définit l'identificateur du groupe lors de l'exécution. |
|
1000 |
Définit le droit de liaison aux répertoires ou l'attribut save-text pour les fichiers. |
|
0400 |
Affecte un droit de lecture au propriétaire. |
|
0200 |
Affecte un droit d'écriture au propriétaire. |
|
0100 |
Affecte un droit d'exécution ou de recherche au propriétaire. |
|
0040 |
Affecte un droit de lecture au groupe. |
|
0020 |
Affecte un droit d'écriture au groupe. |
|
0010 |
Affecte un droit d'exécution ou de recherche au groupe. |
|
0004 |
Affecte un droit de lecture aux autres entités. |
|
0002 |
Affecte un droit d'écriture aux autres entités. |
|
0001 |
Affecte un droit d'exécution ou de recherche aux autres entités. |
Remarques :
- Spécifier numériquement le mode désactive toute liste LCA étendue.
- Modifier symboliquement les droits d'accès des groupes affecte également les entrées LCA étendues. Les entrées de groupe définies dans la liste LCA qui correspondent au groupe propriétaire du fichier ne disposent pas des droits supprimés du mode.
- Vous pouvez indiquer plusieurs modes symboliques en les séparant par des virgules. Les opérations sont exécutées dans l'ordre défini, de gauche à droite.
- Vous devez définir le mode symboliquement ou utiliser un code octal explicite de quatre caractères commençant par un zéro (0755, par exemple) si vous supprimez le droit de définition de l'identificateur de groupe lors de l'exécution pour les répertoires.
Sécurité
Contrôle d'accès : Ce programme doit être installé comme un programme utilisateur standard dans la base informatique sécurisée.
Seul le propriétaire du fichier ou le superutilisateur est autorisé à modifier le mode d'un fichier.
Etat de sortie
Cette commande renvoie les valeurs de sortie suivantes :
|
0 |
L'exécution de la commande a abouti et tous les changements requis ont été effectués. |
|
>0 |
Il s'est produit une erreur. |
Exemples
- Pour ajouter un droit de droit à plusieurs fichiers, entrez :
chmod g+w chap1 chap2
Cette commande ajoute aux membres du groupe des droits d'accès en écriture sur les fichiers chap1 et chap2.
- Pour modifier simultanément plusieurs droits, entrez :
chmod go-w+x MonRép
Cette commande refuse aux membres d'un groupe et aux autres entités le droit de créer ou de supprimer des fichiers dans MonRép (go-w) et les autorise à effectuer des recherches dans MonRép ou à l'utiliser dans un nom de chemin (go+x). La commande est équivalente à la séquence :
chmod g-w MonRép
chmod o-w MonRép
chmod g+x MonRép
chmod o+x MonRép
- Pour n'autoriser que le propriétaire à utiliser une procédure shell en tant que commande, entrez :
chmod u=rwx,go= cmd
Cette commande accorde le droit de lecture, d'écriture et d'exécution au propriétaire du fichier (u=rwx). Elle refuse également au groupe et aux autres entités le droit d'accéder à cmd d'aucune façon que ce soit (go=).
Si vous disposez du droit d'exécution du fichier de commande shell cmd, vous pouvez l'exécuter en entrant :
cmd
Remarque :
Selon la variable shell PATH, vous devrez peut-être définir le chemin d'accès complet au fichier cmd.
- Pour utiliser les modes de définition d'identificateur, entrez :
chmod ug+s cmd
Lors de l'exécution de la commande cmd, l'utilisateur et les identificateurs de groupe effectifs sont réglés sur les valeurs du propriétaire du fichier cmd. Seuls les identificateurs effectifs associés au processus enfant qui exécute la commande cmd sont modifiés. Les identificateurs effectifs de la session shell ne sont pas modifiés.
Cette fonction vous permet d'autoriser l'accès aux fichiers restreints.
Supposons que le programme cmd est autorisé à définir l'identificateur utilisateur et que son propriétaire est l'utilisateur dbms.
L'utilisateur dbms n'est pas une personne, mais peut être associé à un système de gestion de base de données. L'utilisateur bernard n'est autorisé à accéder à aucun des fichiers de données de dbms. Il dispose cependant du droit d'exécution de la commande cmd. Quand il utilise cette commande, son identificateur utilisateur effectif est temporairement remplacé par dbms, afin que le programme cmd puisse accéder aux fichiers de données que possède l'utilisateur dbms.
L'utilisateur bernard peut ainsi utiliser la commande cmd pour accéder aux fichiers de données, mais il ne risque pas de les endommager accidentellement par le biais des commandes shell standard.
- Pour utiliser le format de mode absolu de la commande chmod, entrez :
chmod 644 text
Cette commande définit le droit de lecture et d'écriture du propriétaire, ainsi que le mode lecture seule pour le groupe et les autres entités. Elle supprime également toutes les listes LCA étendues éventuellement associées au fichier.
- Pour explorer les répertoires de manière récursive et modifier les droits d'accès aux fichiers et aux répertoires de la structure arborescente, entrez :
./rép1/rép2/fichier1
./rép1/rép2/fichier2
./rép1/fichier1
Entrez la séquence suivante :
chmod -R 777 f*
qui modifie les droits sur ./rép1/fichier1.
Mais si la structure arborescente correspond à :
./rép1/répf2/fichier1
./rép1/répf2/fichier2
./rép1/fichier3
la séquence :
chmod -R 777 f*
modifie les droits d'accès sur :
./rép1/répf2
./rép1/répf2/fichier1
./rép1/répf2/fichier2
./rép1/fichier3
Fichier
|
/usr/bin/chmod |
Contient la commande chmod. |