Introduction
chmod (abréviation de change mode) est une commande Unix exécutable dans un environnement de type Unix qui permet de changer les permissions d'accès (spéciales ou non) sur un fichier.
chmod (abréviation de change mode) est une commande Unix exécutable dans un environnement de type Unix qui permet de changer les permissions d'accès (spéciales ou non) sur un fichier.
Les options passées à la commande chmod sont indiquées comme ceci :
chmod *options* *modes* *fichiers*
Pour un fichier : chmod *[u g o a]* *[+ - =] [r w x]* *nom_du_fichier*
Pour le contenu d'un répertoire (de façon récursive) : chmod -R *[u g o a]* *[+ - =] [r w x]* *nom_du_répertoire*
chmod a un certain nombre d'options qui peuvent modifier le résultat. Certaines de ces options sont :
Pour chaque fichier donné, les permissions s'appliquent au propriétaire du fichier (u), aux utilisateurs dans le groupe du fichier (g) ou à tous les autres utilisateurs (o). Pour appliquer les modifications à tous en une seule fois, on utilise la commande (a) pour all.
Les modes peuvent être spécifiés de deux façons, avec des lettres ou avec des nombres en octal. Pour les lettres, il existe les opérateurs de changement d'état + et - pour ajouter ou retirer un type de droit aux droits courant, et l'opérateur = pour les écraser. Pour l'octal, il faut additionner les nombres pour chaque type de possesseur.
Les permissions sont (valeurs octales entre parenthèses) :
| Correspondances de représentation des droits | ||
|---|---|---|
| Droit | Valeur alphanumérique | Valeur octale |
| aucun droit | --- | 0 |
| exécution seulement | --x | 1 |
| écriture seulement | -w- | 2 |
| ecriture et exécution | -wx | 3 |
| lecture seulement | r-- | 4 |
| lecture et exécution | r-x | 5 |
| lecture et écriture | rw- | 6 |
| tous les droits (lecture, écriture et exécution) | rwx | 7 |
Il existe trois modes spéciaux couramment utilisés : le sticky bit (noté t) et les SETUID et SETGID bits (notés s).
chmod existe dans la bibliothèque standard C. Elle a la même fonction que la commande Unix.
int chmod(const char *path, int amode) ;
Où :
int fchmod(int descripteur du fichier, mode_t mode)
La différence entre chmod et fchmod, c'est que chmod prend le chemin du fichier comme argument (ce qui est lisible par un être humain, exemple : /tmp/toto.txt), alors que fchmod prend le descripteur de fichier comme argument.
chmod existe dans les librairies Perl pour changer les permissions d'une liste de fichiers. Le deuxième paramètre doit être la valeur OCTAL. La fonction retourne le nombre de fichiers il y a eu succès.
$cnt = chmod 0755, 'fichier1', 'fichier2'; $cnt = chmod 0755, @liste;
chmod existe dans la bibliothèque standard PHP. Elle a la même fonction que la commande Unix et les mêmes paramètres que la fonction C.
Sous MS-DOS et Windows, l'utilitaire attrib permet de changer certains attributs (lecture, écriture, caché, système) des fichiers, non liés au propriétaire.
Sous Windows NT, cacls est l'utilitaire plus complet en ligne de commande équivalent à chmod et chown.