2. Manipulation des attributs de fichiers

La série de commandes présentée ici est utilisée pour changer le propriétaire ou le groupe propriétaire d'un fichier ou ses droits d'accès. Les différents droits d'accès sont présentés dans le chapitre « Concepts de base des systèmes UNIX® ».

2.1. chown, chgrp : changer l'utilisateur et le groupe propriétaire d'un ou plusieurs fichiers

La syntaxe de la commande chown est la suivante :

chown [options] <user[:group]> <fichier|répertoire> [fichier|répertoire...]

Entre autres options, vous trouverez celles-ci :

  • -R : récursif. Change le propriétaire de tous les fichiers et sous-répertoires d'un répertoire donné ;

  • -v : mode verbeux. Décrit toutes les actions effectuées par chown ; indique quels fichiers ont changé de propriétaire à la suite de la commande ainsi que ceux qui demeurent inchangés ;

  • -c : comme -v, mais ne mentionne que les fichiers pour lesquels il y a eu un changement.

Quelques exemples :

  • chown nobody /shared/book.tex : change le propriétaire du fichier /shared/book.tex au profit de nobody ;

  • chown -Rc reine:musique *.mid concerts/ : donne la propriété de tous les fichiers se terminant par .mid dans le répertoire courant et de tous les fichiers et sous-répertoires du répertoire concerts/ à reine et au groupe musique. Cette commande ne mentionne que les fichiers affectés par la commande.

La commande chgrp (CHange GRouP) ne vous laisse changer que le groupe propriétaire d'un fichier ou d'un groupe de fichiers. Sa syntaxe est très semblable à celle de la commande chown :

chgrp [options] <group> <fichier|répertoire> [fichier|répertoire...]

Les options de cette commande sont les mêmes que pour chown, et elle est utilisée de façon très similaire. Ainsi, la commande chgrp disk /dev/hd* attribue au groupe propriétaire disk tous les fichiers du répertoire /dev commençant par les lettres hd.

2.2. chmod : changer les permissions sur des fichiers et des répertoires

La commande chmod a une syntaxe bien particulière. Sa syntaxe générale est :

chmod [options] <change mode> <fichier|répertoire> [fichier|répertoire...]

mais ce sont les différentes formes que peut prendre le changement de mode qui la rendront plus spécifique. Ceci peut se produire de deux façons :

  1. en octal. Les droits d'accès de l'utilisateur propriétaire correspondent alors à des chiffres de la forme <x>00, où <x> correspond au droit assigné : 4 pour lecture, 2 pour écriture, 1 pour exécution. De même, les droits d'accès du groupe propriétaire sont de la forme <x>0 et ceux des « autres » sont de la forme x. Pour obtenir le chiffre correct, il suffira d'additionner les droits d'accès assignés. Ainsi, les permissions rwxr-xr-- correspondent à 400+200+100 (droits d'accès de l'utilisateur propriétaire, rwx) +40+10 (droits d'accès du groupe, r-x) +4 (droits d'accès des autres, r--) = 754. Les droits d'accès sont ainsi exprimés de manière absolue : les droits d'accès précédents sont remplacés de façon inconditionnelle ;

  2. à l'aide de certaines expressions. Les droits d'accès sont ici indiqués par une suite d'expressions séparées par des virgules, une expression étant de la forme [catégorie]<+|-|=><droits d'accès>.

La catégorie peut être une combinaison de :

  • u (User, soit utilisateur, permission pour propriétaire) ;

  • g (Group, soit groupe, permission pour le groupe propriétaire) ou ;

  • o (Others, permission pour les « autres »).

Si aucune catégorie n'est spécifiée, le changement s'applique à toutes les catégories. Un + attribue un droit, un - le retire et un = établit la permission à la valeur spécifiée. Pour finir, les permissions sont définies par une ou plusieurs des lettres suivantes :

  • r (Read, soit lecture) ;

  • w (Write, soit écriture) ;

  • x (eXecute, soit exécution).

Les options principales sont très similaires à celles de chown ou chgrp :

  • -R : change les droits d'accès récursivement ;

  • -v : mode verbeux. Il décrit les actions effectuées pour chaque fichier ;

  • -c : comme -v, mais ne mentionne que les fichiers dont les droits d'accès ont changé.

Exemples :

  • chmod -R o-w /shared/docs : enlève de façon récursive le droit d'écriture aux « autres » sur tous les fichiers et sous-répertoires du répertoire /shared/docs/.

  • chmod -R og-w,o-x prive/ : enlève le droit d'écriture pour le groupe et les autres sur tout le répertoire prive/, et retire le droit d'exécution pour les autres, le tout récursivement.

  • chmod -c 644 divers/fichier* : change les droits d'accès de tous les fichiers du répertoire divers/ dont les noms commencent par fichiers en rw-r--r-- (droit de lecture pour tout le monde et droit d'écriture pour le propriétaire du fichier seulement). Cette commande ne mentionne que les fichiers affectés par l'opération.