chmod

Chmod

Description de l'image Chmod-GNU.png. Informations
Première version 3 novembre 1971
Type Utilitaire UNIX (d)

chmod (abréviation de change mode) est un appel système d'Unix (norme POSIX) ainsi que la commande correspondante qui permet de changer les permissions d'accès d'un fichier ou d'un répertoire.

Histoire

Cette commande est apparue pour la première fois dans AT&T UNIX version 1.

Permission de changer les droits

Un utilisateur a le droit de faire un chmod sur un fichier :

Utilisation

Les options passées à la commande chmod sont indiquées comme ceci :

chmod options modes fichiers

Pour un fichier : chmod nom_du_fichier

Pour le contenu d'un répertoire (de façon récursive) : chmod -R nom_du_répertoire

Options

chmod a un certain nombre d'options qui peuvent modifier le résultat. Certaines de ces options sont :

Modes

Pour chaque fichier donné, les permissions s'appliquent au propriétaire du fichier (code ’u’ comme user), au groupe d’utilisateurs du fichier (’g’ comme group) ou aux autres utilisateurs (’o’ comme others). Pour appliquer les modifications à tous en une seule fois, on utilise le code ’a’ comme 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 courants, 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 Valeur binaire
aucun droit --- 0 000
exécution seulement --x 1 001
écriture seulement -w- 2 010
écriture et exécution -wx 3 011
lecture seulement r-- 4 100
lecture et exécution r-x 5 101
lecture et écriture rw- 6 110
tous les droits (lecture, écriture et exécution) rwx 7 111

Exemples

Modes spéciaux

Il existe trois modes spéciaux couramment utilisés : le sticky bit (noté t) et les SETUID et SETGID bits (notés s).

Autres chmod

Fonction C

chmod

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ù :

fchmod 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.

Fonction Perl

chmod existe dans les bibliothèques Perl pour changer les permissions d'une liste de fichiers. Le deuxième paramètre doit être la valeur octale. La fonction retourne le nombre de fichiers affectés avec succès.

$cnt = chmod 0644, 'fichier1', 'fichier2'; $cnt = chmod 0644, @liste;

Fonction PHP

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.

cacls et attrib de Microsoft

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.

Notes et références

  1. (en) « POSIX Interface Library: liboskit_posix.a ».

Voir aussi

Liens externes