Manuel de l'Utilisateur Expérimenté Solaris

Droits d'accès aux fichiers et aux répertoires


Remarque :

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 :

Il existe trois catégories d'utilisateurs pour lesquels des droits d'accès peuvent être définis :

Affichage des droits d'accès et des statuts (ls -l)

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.

Figure 3-2 Affichage des attributs des droits d'accès et des statuts

Graphic

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 :

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

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.

Etablissement d'une liste de fichiers "cachés" (ls -a)

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.

Modification des droits d'accès (chmod)

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

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 :

  1. Utilisez une ou plusieurs lettres pour indiquer le type d'utilisateur auquel les droits d'accès s'appliquent :

    • u (pour utilisateur)

  2. g (pour groupe)

  3. o (pour autres utilisateurs)

  4. a (pour toutes les catégories ci-dessus)

  5. Indiquez si les droits d'accès doivent être ajoutés (+) ou supprimés (-).

  6. Utilisez une ou plusieurs lettres pour indiquer les droits d'accès :

    • r (pour lire)

  7. w (pour écrire)

  8. x (pour exécuter)

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 :

$ pwd
/home/user2/veggies
$ ls -l
-rwxrwxrwx  3 user2          21032 Feb 12  10:31 beats
-rwxrwxrwx  2 user2             68 Feb 10  11:09 corn
-rwxrwxrwx  3 user2          12675 Feb 08  09:31 garlic
-rwxrwxrwx  1 user2           1024 Feb 14  16:38 onions
$ chmod go-w *
$ ls -l
-rwxr-xr-x  3 user2          21032 Feb 12  10:31 beats
-rwxr-xr-x  2 user2             68 Feb 10  11:09 corn
-rwxr-xr-x  3 user2          12675 Feb 08  09:31 garlic
-rwxr-xr-x  1 user2           1024 Feb 14  16:38 onions
$

Dans l'exemple ci-dessus, la commande pwd indique que le répertoire auquel vous appliquez la commande chmod est le répertoire courant.

Définition de droits d'accès absolus

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

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 

Ecrire 

Exécuter 

Total 

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 

Ecrire 

Exécuter 

Total 

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 

Ecrire 

Exécuter 

Total 

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.

$ pwd
/home/user2/veggies
$ ls -l
-rwxrwxrwx  3 user2          21032 Feb 12  10:31 beats
-rwxrwxrwx  2 user2             68 Feb 10  11:09 corn
-rwxrwxrwx  3 user2          12675 Feb 08  09:31 garlic
-rwxrwxrwx  1 user2           1024 Feb 14  16:38 onions
$ chmod 751 *
$ ls -l
-rwxr-x--x  3 user2          21032 Feb 12  10:31 beats
-rwxr-x--x  2 user2             68 Feb 10  11:09 corn
-rwxr-x--x  3 user2          12675 Feb 08  09:31 garlic
-rwxr-x--x  1 user2           1024 Feb 14  16:38 onions
$

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.