lisez attentivement cette section. Une bonne compréhension des droits d'accès aux fichiers est souvent importante dans votre travail quotidien.
Les droits d'accès aux fichiers permettent de protéger les fichiers et les répertoires contre toute opération de lecture ou d'écriture non autorisée. Dans la plupart des cas, d'autres utilisateurs pourront lire vos fichiers, mais ne pourront pas les modifier. Dans d'autres cas, vous pourrez être amené à partager des fichiers exécutables (des programmes) avec d'autres utilisateurs. Les droits d'accès aux fichiers vous permettent de contrôler les conditions d'accès à vos fichiers.
Les principaux types de droits d'accès aux fichiers et aux répertoires sont les suivants :
r - droit de lecture (read) . La lecture du fichier doit être possible pour que vous puissiez le consulter ou le copier. La lecture d'un répertoire doit être possible pour que vous puissiez établir une liste de son contenu.
w - droit d'écriture (write). L'écriture du fichier doit être possible pour que vous puissiez le modifier, le supprimer ou le renommer. La lecture d'un répertoire doit être possible pour que vous puissiez y ajouter ou y supprimer des fichiers.
x - droit d'exécution (execute). Un fichier possédant un droit d'exécution est un fichier que vous pouvez exécuter, tel qu'un programme. Un répertoire doit être exécutable pour que vous puissiez accéder à l'ensemble de ses sous-répertoires.
Il existe trois catégories d'utilisateurs pour lesquels des droits d'accès peuvent être définis :
Groupe : les autres personnes appartenant au même groupe que l'utilisateur (par exemple, tous les utilisateurs de la comptabilité). Les groupes sont établis et mis à jour par l'administrateur système.
Vous avez déjà utilisé la commande ls pour établir une liste des fichiers. La commande ls possède de nombreuses options. Utilisez l'option -l pour afficher une liste détaillée. Les fichiers et les répertoires sont répertoriés par ordre alphabétique. La figure 3-2 illustre la méthode d'affichage des fichiers par ordre alphabétique.
Le premier caractère de la ligne indique le type du fichier. Le tiret (-) représente un fichier ordinaire, la lettre d un répertoire (directory) et les autres caractères, des types de fichiers spéciaux.
Les neuf caractères suivants indiquent les attributs des droits d'accès au fichier ou au répertoire correspondant. Ces neuf caractères sont formés de trois groupes de trois caractères, indiquant respectivement les attributs des droits d'accès du propriétaire, du groupe du propriétaire et des autres (ni le propriétaire, ni les membres de son groupe). Les attributs des droits d'accès au fichier emptyfile sont rw-r--r--. Ils indiquent que le propriétaire peut lire et écrire dans ce fichier, que tous les utilisateurs peuvent le lire, mais qu'aucun utilisateur ne peut l'exécuter. Les attributs des droits d'accès au répertoire veggies2 sont rwxr-xr-x. Ils indiquent que tous les utilisateurs ont un droit d'exécution et de lecture, mais que seul le propriétaire peut apporter des modifications.
Outre les droits d'accès au fichier, la figure ci-avant indique les informations suivantes :
Nombre de liens vers ce fichier ou ce répertoire
Nom du propriétaire (en l'occurrence, user2)
Date et heure de la dernière mise à jour du fichier ou du répertoire
Nom du fichier ou du répertoire
Utilisez la commande cd pour accéder à votre répertoire utilisateur, puis mettez en pratique la commande ls -l. Vos résultats seront, bien entendu, différents de ceux de l'exemple ci-dessus.
Essayez maintenant de taper la commande suivante :
$ ls -l nom_répertoire |
où nom_répertoire désigne le nom d'un répertoire réel dans votre système de fichiers. Lorsque vous indiquez le nom d'un répertoire, la commande ls -l affiche des informations sur l'ensemble des fichiers ou des sous-répertoires (éventuels) qui se trouvent dans ce répertoire.
Certains fichiers ne peuvent pas être répertoriés par la commande ordinaire ls. Le nom de ces fichiers commence par le caractère . (point), comme par exemple .cshrc, .login et .profile. Utilisez la commande ls -a pour établir une liste de ces fichiers point :
$ ls -a . .. .cshrc .login .profile emptyfile |
Remarquez que les fichiers commençant par un point (.) sont affichés en premier. Il existe deux fichiers spéciaux dans cette liste : le fichier. qui représente le répertoire courant et le fichier .. qui représente le répertoire père.
En règle générale, les fichiers commençant par un point (.) sont utilisés par les utilitaires du système et n'ont pas à être modifiés par l'utilisateur. Il existe cependant des exceptions.
Utilisez la commande chmod pour modifier les droits d'accès à un fichier ou à un répertoire. Pour pouvoir effectuer cette opération, vous devez être le propriétaire d'un fichier ou d'un répertoire, ou être superutilisateur. La commande chmod se présente sous la forme suivante :
chmod droits_d'accès nom |
où droits_d'accès désigne les droits d'accès à modifer et nom, le nom du fichier ou du répertoire sur lequel portera la modification.
Les droits d'accès peuvent être indiqués sous différentes formes. La forme suivante est l'une des plus simples :
Utilisez une ou plusieurs lettres pour indiquer le type d'utilisateur auquel les droits d'accès s'appliquent :
u (pour utilisateur)
g (pour groupe)
o (pour autres utilisateurs)
a (pour toutes les catégories ci-dessus)
Indiquez si les droits d'accès doivent être ajoutés (+) ou supprimés (-).
Utilisez une ou plusieurs lettres pour indiquer les droits d'accès :
Dans l'exemple suivant, le droit d'écriture est ajouté au répertoire carrots pour les utilisateurs appartenant au même groupe (ainsi, les attributs du droit d'accès sont g+w et name est le nom du répertoire carrots) :
$ ls -l carrots drwxr-xr-x 3 user2 1024 Feb 10 11:15 carrots $ chmod g+w carrots $ ls -l carrots drwxrwxr-x 3 user2 1024 Feb 10 11:15 carrots $ |
Comme vous pouvez le voir, le tiret (-) du jeu de caractères correspondant au groupe d'utilisateurs a été remplacé par la lettre w suite à l'exécution de cette commande.
Pour éviter que les utilisateurs appartenant à un groupe différent du vôtre puissent lire et exécuter ce répertoire (les attributs du droit d'accès sont o-rx), vous devez entrer les commandes suivantes :
$ ls -l carrots drwxrwxr-x 3 user2 1024 Feb 10 11:15 carrots $ chmod o-rx carrots $ ls -l carrots drwxrwx--- 3 user2 1024 Feb 10 11:15 carrots $ |
Les lettres r (pour lire) et x (pour exécuter) du jeu de caractères correspondant aux autres utilisateurs ont été remplacées par un tiret (-).
Lorsque vous créez un nouveau fichier ou un nouveau répertoire, les droits d'accès sont affectés automatiquement par le système.
En règle générale, les paramètres d'affectation par défaut des nouveaux fichiers sont :
-rw-r--r--
ceux des nouveaux répertoires sont :
drwxr-xr-x
Par conséquent, pour que le nouveau fichier turnip soit exécutable par son propriétaire (user2), vous devez entrer les commandes suivantes :
$ ls -l turnip -rw-r--r-- 3 user2 1024 Feb 10 12:27 turnip $ chmod u+x turnip $ ls -l turnip -rwxr--r-- 3 user2 1024 Feb 10 12:27 turnip $ |
Si vous souhaitez affecter simultanément les trois catégories d'utilisateurs, utilisez l'option a. Pour que le nouveau fichier garlic soit exécutable par l'ensemble des utilisateurs, vous devez entrer les commandes suivantes :
$ ls -l garlic -rw-r--r-- 3 user2 1024 Feb 10 11:31 garlic $ chmod a+x garlic $ ls -l garlic -rwxr-xr-x 3 user2 1024 Feb 10 11:31 garlic $ |
L'indicateur x apparaît alors dans les trois catégories.
Vous pouvez également modifier les attributs des droits d'accès à des groupes de fichiers ou à des répertoires, en utilisant le caractère générique *. Par exemple, pour changer les attributs des droits d'accès à l'ensemble des fichiers du répertoire courant veggies, afin que vous seul puissiez écrire dans ces fichiers, vous devez entrer les commandes suivantes :
Dans l'exemple ci-dessus, la commande pwd indique que le répertoire auquel vous appliquez la commande chmod est le répertoire courant.
Jusqu'ici, les explications relatives au droit d'accès se sont limitées à l'utilisation de la commande chmod en vue de modifier les attributs de droits d'accès relativement à leurs valeurs par défaut. L'utilisation de la commande chmod sous une forme différente, par application de codes numériques indiquant les droits d'accès, vous permet de définir de manière absolue un droit d'accès à un fichier ou à un répertoire.
La syntaxe correspondante de la commande chmod est la suivante :
chmod code_ numérique nom
où code_numérique désigne le code numérique et nom le nom du fichier ou du répertoire pour lequel le droit d'accès est modifié.
Le code numérique complet est composé de trois chiffres, utilisés pour chacune des trois catégories prédéfinies : utilisateur, groupe et autres. Par exemple, la commande suivante définit un droit de lecture, d'écriture et d'exécution absolu pour les catégories utilisateur et groupe, et uniquement un droit d'exécution pour la catégorie autres :
$ chmod 771 garlic |
Le Tableau 3-1 montre comment le code 771 est utilisé pour représenter les droits d'accès au fichier garlic.
Tableau 3-1 Droits d'accès au fichier garlic
Droits d'accès |
Utilisateur |
Groupe |
Autres |
---|---|---|---|
Lire |
4 |
4 |
0 |
Ecrire |
2 |
2 |
0 |
Exécuter |
1 |
1 |
1 |
Total |
7 |
7 |
1 |
Chaque colonne du tableau 3-1 représente l'une des catégories prédéfinies : utilisateur, groupe et autres. Pour définir un droit de lecture, insérez le chiffre 4 dans la colonne prévue à cet effet. Pour définir un droit d'écriture, insérez 2. Pour définir un droit d'exécution, insérez 1. Le total des trois colonnes figurant dans la dernière rangée du tableau représente le code numérique complet.
L'écran suivant, dans lequel la commande ls -l indique les résultats obtenus, constitue un autre exemple de définition d'un droit d'accès absolu :
$ ls -l onion -rw-r--r-- 3 user2 1024 Feb 10 11:46 onion $ chmod 755 onion $ ls -l onion -rwxr-xr-x 3 user2 1024 Feb 10 11:48 onion $ |
Pour le fichier onion, les droits d'accès sont définis de telle manière que l'utilisateur puisse lire, écrire, et exécuter ce fichier ; les membres de la catégorie groupe peuvent le lire et l'exécuter, de même que les membres de la catégorie autres. Le code numérique utilisé pour définir les droits d'accès au fichier onion est défini dans le Tableau 3-2.
Tableau 3-2 Droits d'accès au fichier onion
Droits d'accès |
Utilisateur |
Groupe |
Autres |
---|---|---|---|
Lire |
4 |
4 |
4 |
Ecrire |
2 |
0 |
0 |
Exécuter |
1 |
1 |
1 |
Total |
7 |
5 |
5 |
Pour attribuer un droit de lecture, d'écriture et d'exécution du fichier cabbage aux trois catégories du tableau ci-dessus, vous devez bien entendu entrer les commandes suivantes :
$ ls -l cabbage -rw-r--r-- 3 user2 1024 Feb 10 11:51 cabbage $ chmod 777 cabbage $ ls -l cabbage -rwxrwxrwx 3 user2 1024 Feb 10 11:53 cabbage $ |
Cet exemple est décomposé dans le Tableau 3-3.
Tableau 3-3 Droits d'accès au fichier cabbage
Droits d'accès |
Utilisateur |
Groupe |
Autres |
---|---|---|---|
Lire |
4 |
4 |
4 |
Ecrire |
2 |
2 |
2 |
Exécuter |
1 |
1 |
1 |
Total |
7 |
7 |
7 |
Le code numérique 777 représente le niveau maximal de droits d'accès que vous pouvez définir.
Comme pour changer un droit d'accès relatif, vous pouvez utiliser le caractère générique * afin de définir un droit d'accès absolu à l'ensemble des fichiers du répertoire courant. Imaginons que vous souhaitiez définir un droit d'accès absolu à l'ensemble des fichiers du répertoire courant veggies : si vous entrez les commandes suivantes, vous aurez un droit de lecture, d'écriture, et d'exécution, votre groupe aura un droit de lecture et d'exécution, et tous les autres utilisateurs auront uniquement un droit d'exécution.
Dans l'exemple ci-dessus, la commande pwd indique que le répertoire sur lequel vous effectuez cette procédure est le répertoire courant. La commande ls -l est affichée uniquement pour illustrer le changement des droits d'accès. Lors de la définition des droits d'accès absolus, il n'est pas nécessaire de connaître les types des droits d'accès en vigueur dans le système.
Pour plus d'informations sur la commande chmod(1), consultez les man Pages(1): User Commands.