Manuel de l'Utilisateur Expérimenté Solaris

Chapitre 3 Gestion des fichiers et des répertoires

La ligne de commande SunOS est utilisée pour manipuler les fichiers et les répertoires. Vous utilisez les noms de fichiers et de répertoires en tant que paramètres de commande SunOS afin de mener à bien des opérations spécifiques. Avec le Gestionnaire de fichiers OpenWindows, la procédure est différente : les fichiers sont affichés sous forme d'icônes qui peuvent être déplacées ou activées par cliquage, et les commandes sont sélectionnées à partir de menus.

Ce chapitre vous présente les concepts et les procédures de gestion des fichiers et des répertoires vous permettant de travailler à partir de la ligne de commande SunOS. Ces procédures s'appliquent à toute ligne de commande SunOS, que vous utilisiez un Utilitaire Shell ou un Utilitaire de commande sous OpenWindows, ou que vous soyez connecté à un terminal distant. Afin de garantir une utilisation optimale du système d'exploitation SunOS, il est essentiel que vous compreniez les concepts présentés dans ce chapitre.

Concepts de gestion des fichiers

Le fichier constitue l'élément central du système d'exploitation SunOS. Les composants de ce système sont pour la plupart traités comme des fichiers, y compris :

La section suivante décrit les commandes utilisées pour créer, lister, copier, déplacer et supprimer des fichiers. Il vous indique également les procédures à suivre pour répertorier le contenu d'un fichier et en déterminer le type.

Utilisation des commandes de fichiers

Chaque commande présentée dans ce chapitre s'accompagne d'un exemple d'utilisation. Mettez ces exemples en pratique au fur et à mesure de votre lecture. Vous pourrez ainsi acquérir une maîtrise plus rapide de ces différentes commandes et des concepts associés.

Avant de commencer

Avant de commencer à gérer les fichiers, vérifiez que vous êtes dans votre répertoire utilisateur (home). Ce répertoire a été défini par votre administrateur système lors de la création de votre compte. L'exécution des tâches indiquées dans les exemples suivants vous évitera de créer, copier, déplacer, ou, pire encore, de supprimer des fichiers dans certaines parties du système que d'autres utilisateurs souhaiteraient conserver en l'état.

Afin d'être sûr que vous vous trouvez dans votre répertoire utilisateur, tapez la commande cd (changer de répertoire). Vous accédez alors à votre répertoire utilisateur (répertoire par défaut). Tapez ensuite la commande pwd (imprimer le répertoire de travail) pour visualiser l'emplacement de votre répertoire courant dans le système de fichiers. Le répertoire affiché est votre répertoire utilisateur :

$ cd
$ pwd
/export/home/nom_utilisateur

Dans cet exemple, le répertoire utilisateur est /export/home/nom_utilisateur, nom_utilisateur désignant l'utilisateur de ce répertoire.

Création d'un fichier test

Pour créer un fichier vide, utilisez la commande touch. S'il n'existe pas déjà un fichier du même nom, la commande touch crée un fichier vide (si un fichier du même nom existe déjà, la commande touch met à jour la dernière heure d'accès au fichier).

$ touch tempfile
$ 

Liste de fichiers (ls)

A l'aide de la commande ls, établissez une liste des fichiers du répertoire pour vérifier que vous avez créé votre fichier :

$ ls tempfile
tempfile 

Lorsque vous entrez uniquement la commande ls, celle-ci affiche la liste de tous les fichiers de votre répertoire. Si vous entrez la commande ls en précisant un nom de fichier, seul ce fichier sera affiché, s'il existe.

Pour plus d'informations sur la commande ls(1), consultez les man Pages(1): User Commands.

Copie de fichiers (cp)

Utilisez la commande cp pour copier le fichier tempfile vers un fichier copyfile :

$ cp tempfile copyfile
$ 

Essayez maintenant d'afficher le nom des deux fichiers du répertoire. Notez que les noms des deux fichiers se terminent par "file". Le caractère générique (*) peut être utilisé pour remplacer un caractère ou une chaîne de caractères communs. Par conséquent, la commande ls *file affiche les fichiers tempfile et copyfile (et tous les autres fichiers du répertoire dont le nom se termine par file) :

$ ls *file
copyfile    tempfile

Remarquez que le fichier copyfile est le premier de la liste, car les fichiers sont répertoriés par ordre alphabétique. (Les lettres en majuscules et les nombres précèdent les lettres en minuscules).

Pour plus d'informations sur la commande cp(1), consultez les man Pages(1): User Commands.

Déplacement de fichiers et changement de nom (mv)

Vous pouvez déplacer et renommer les fichiers en utilisant la commande mv (déplacer). Dans l'exemple ci-dessous, utilisez la commande mv pour renommer le fichier tempfile en emptyfile.

$ mv tempfile emptyfile
$ 

Listez à nouveau les deux fichiers afin de vérifier que le changement de nom a bien été effectué :

$ ls *file
copyfile    emptyfile

Comme vous pouvez le voir, le fichier tempfile a été remplacé par emptyfile.

Pour plus d'informations sur la commande mv(1), consultez les man Pages(1): User Commands.

Suppression de fichiers (rm)

Utilisez la commande rm (supprimer) pour supprimer le fichier copyfile, et vérifiez le résultat à l'aide de la commande ls :

$ rm copyfile
$ ls *file
emptyfile


Attention : Attention :

Graphicla suppression d'un fichier est une action irréversible. Le fichier supprimé ne pourra pas être restauré si aucune copie de sauvegarde n'a été effectuée. Utilisez avec précaution la commande rm et, en particulier, le caractère générique (*). Les fichiers qui ont été supprimés à l'aide de la commande rm ne pourront pas être restaurés.


Pour plus d'informations sur la commande rm(1), consultez les man Pages(1): User Commands.

Affichage du contenu d'un fichier (more,cat)

Utilisez la commande more pour afficher le contenu d'un fichier. Tapez more puis le nom du fichier que vous souhaitez afficher. Le contenu du fichier défile à l'écran. Si le contenu du fichier ne peut pas être affiché en totalité à l'écran, le message suivant apparaît :

--More--(nn%)  [Appuyez sur
la barre d'espacement pour continuer,
et sur `q' pour quitter.]

nn désigne le pourcentage déja affiché.

Vous pouvez également utiliser la commande cat pour afficher le contenu d'un fichier. Dans ce cas, la totalité du fichier défile rapidement à l'écran sans marquer de pause. La commande cat (concaténer) est généralement utilisée pour créer un gros fichier à partir de deux fichiers ou plus, comme dans l'exemple ci-dessous :

$ cat file1 file2 file3 > bigfile
$ ls *file
bigfile
file1
file2
file3
$

Pour plus d'informations sur les commandes more(1) ou cat(1), consultez les man Pages(1): User Commands.

Affichage du format d'un fichier (file)

Certains fichiers, tels que les fichiers binaires ou exécutables, ne sont pas imprimables et ne peuvent pas être affichés à l'écran. Vous pouvez utiliser la commande file pour connaître le format d'un fichier.

Utilisez la commande file pour afficher le format du fichier :

$ file copyfile
copyfile:    texte ascii

Répertoires et arborescence des répertoires

Vous savez maintenant comment établir une liste, copier, renommer et supprimer des fichiers. Toutefois, vous souhaitez peut-être obtenir des réponses à d'autres questions plus générales, et savoir par exemple où ces fichiers sont situés. La présente section traite de l'arborescence d'un répertoire. Lisez-la attentivement, puis mettez en pratique les exemples présentés dans les sections qui font suite.

Arborescence d'un répertoire

Les fichiers sont rassemblés dans des répertoires eux-mêmes organisés hiérarchiquement. Le répertoire "racine" (root), identifié par le signe "/", figure au sommet de l'arborescence.

Comme le montre la Figure 3-1ci-après, chaque répertoire du système de fichiers peut posséder un grand nombre de sous-répertoires. Les niveaux de répertoires sont communément différenciés à l'aide du caractère /. Sachant cela, remarquez que le répertoire / (racine) contient des sous-répertoires intitulés, entre autres, /usr, /bin, /home et /lib. Le sous-répertoire /home contient d'autres sous-répertoires, tels que user1, user2 et user3.

Pour accéder aux répertoires (et aux fichiers qu'ils contiennent), précisez les noms des répertoires dans lesquels ils sont situés. Cela s'appelle un chemin d'accès. A titre d'exemple, le chemin d'accès du répertoire user3 est /home/user3.

Figure 3-1 Arborescence du système de fichiers

Graphic

Les noms des sous-répertoires et des fichiers figurant dans un même répertoire doivent être différents. Ils ne peuvent être identiques que s'ils figurent dans des répertoires différents. Par exemple, le répertoire /usr contient le sous-répertoire /usr/lib. Il n'y a pas de conflit entre /usr/lib et /lib étant donné que leurs chemins d'accès sont différents.

Les chemins d'accès des fichiers se présentent sous la même forme que ceux des répertoires. Le chemin d'accès d'un fichier indique l'emplacement du fichier en question dans l'arborescence du système de fichiers. Par exemple, si le répertoire /home/user2 contient un fichier intitulé report5, le chemin d'accès de ce fichier est /home/user2/report5. Le fichier report5 se trouve donc dans le répertoire user2 du répertoire home, qui figure lui-même dans le répertoire racine (/).

Les répertoires peuvent contenir des sous-répertoires, des fichiers ou les deux.

Impression du répertoire de travail (pwd)

La commande pwd (imprimer le répertoire de travail) indique votre emplacement dans l'arborescence du système de fichiers :

$ pwd
/home/user1

Votre résultat sera quelque peu différent de l'exemple ci-dessus, étant donné que votre système de fichiers sera organisé différemment. Souvenez-vous que votre répertoire de travail représente votre emplacement courant dans l'arborescence du système de fichiers.

Votre répertoire utilisateur

Chaque opérateur possède un répertoire utilisateur (home). Lorsque vous ouvrez tout d'abord la fenêtre Utilitaire de commande ou Utilitaire Shell dans l'environnement OpenWindows, votre emplacement initial (répertoire de travail) est votre répertoire utilisateur. L'administrateur système a établi ce répertoire lors de la création de votre compte utilisateur.

Changement de répertoire de travail (cd)

La commande cd (changer de répertoire) vous permet de vous déplacer dans l'arborescence du système de fichiers :

$ cd /usr/lib
$ pwd
/usr/lib

Lorsque vous tapez uniquement la commande cd, vous revenez à votre répertoire utilisateur. Prenons l'exemple de votre répertoire utilisateur, dont le chemin d'accès est /home/user1:

$ cd
$ pwd
/home/user1

Dans l'interpréteur C Shell, le tilde (~) est utilisé comme raccourci pour indiquer votre répertoire utilisateur. Par exemple, pour accéder au sous-répertoire music de votre répertoire utilisateur, tapez :

exemple% cd ~/music

Vous pouvez également utiliser ce raccourci pour indiquer le nom du répertoire utilisateur d'une autre personne. Par exemple :

exemple% cd ~nom_utilisateur

nom_utilisateur désigne le nom de connexion d'un autre utilisateur et correspond à son répertoire utilisateur.


Remarque :

le Bourne shell ne permet pas l'utilisation du raccourci ~.


Si vous utilisez le Bourne shell, il est possible que votre administrateur système ait configuré le système de telle sorte que vous puissiez taper $home pour indiquer votre répertoire utilisateur. Dans ce cas, en tapant :

$ cd $home/music

vous accédez au sous-répertoire music de votre répertoire utilisateur. De même, en tapant :

$ cd $homenom_utilisateur

vous accédez au répertoire utilisateur de la personne indiquée, où nom_utilisateur désigne le nom de connexion d'un autre utilisateur.

Le répertoire situé immédiatement "au-dessus" d'un sous-répertoire s'appelle le répertoire père. Dans l'exemple précédent, /home est le répertoire père de /home/user1. Le symbole .. ("point-point") représente le répertoire père. Par conséquent, la commande cd .. permet d'accéder au répertoire père à partir du répertoire de travail, comme le montre l'exemple ci-dessous :

$ pwd
/home/user1
$ cd ..
$ pwd
/home

Supposons que votre répertoire de travail en cours soit /home/user1 et que vous souhaitiez travailler sur des fichiers du répertoire /home/user2. Voici un raccourci utile :

$ pwd
/home/user1
$ cd ../user2
$ pwd
/home/user2

../user2 demande au système de chercher le répertoire user2 dans le répertoire père. Cette procédure évite ainsi de taper le chemin d'accès complet /home/user2.

Création d'un répertoire (mkdir)

Il est facile de créer un nouveau répertoire. Il vous suffit de taper la commande mkdir, puis le nom du répertoire que vous souhaitez créer :

$ mkdir veggies
$ cd veggies
$ mkdir broccoli
$ cd broccoli
$ pwd
/home/user2/veggies/broccoli

Chemins d'accès relatifs

Le chemin d'accès complet d'un répertoire ou d'un fichier commence par une barre oblique (/) et décrit la structure complète des répertoires situés entre ce fichier (ou ce répertoire) et le répertoire racine. Toutefois, un chemin d'accès beaucoup plus bref peut être utilisé dans la plupart des cas pour définir le fichier ou le répertoire relativement au répertoire de travail courant.

Lorsque vous êtes dans un répertoire père, vous pouvez accèder à un sous-répertoire en utilisant uniquement le nom du répertoire, et non pas le chemin d'accès complet. Dans l'exemple précédent, la commande cd veggies utilise le chemin d'accès relatif du répertoire veggies. Si le répertoire de travail courant est /home/user2, le chemin d'accès complet de ce répertoire est /home/user2/veggies.

Essayez de créer plusieurs sous-répertoires dans un même répertoire puis déplacez-vous dans ce répertoire. Utilisez les chemins d'accès complets et les chemins d'accès relatifs, puis confirmez votre emplacement à l'aide de la commande pwd.

Déplacement et changement de nom des répertoires

Vous renommez un répertoire en le déplacant vers un répertoire de nom différent. Pour renommer un répertoire, utilisez la commande mv :

$ pwd
/home/user2/veggies
$ ls
broccoli
$ mv broccoli carrots
$ ls
carrots

Vous pouvez également utiliser la commande mv pour déplacer un répertoire vers un autre :

$ pwd
/home/user2/veggies
$ ls
carrots
$ mv carrots ../veggies2
$ ls ../veggies2
carrots

Dans l'exemple ci-dessus, le répertoire carrots a été déplacé du répertoire veggies vers le répertoire veggies2 à l'aide de la commande mv.

Copie de répertoires

Utilisez la commande cp -r pour copier des répertoires et les fichiers qu'ils contiennent :

$ cp -r veggies veggies3
$

Cette commande copie l'ensemble des fichiers et des sous-répertoires du répertoire veggies dans un nouveau répertoire intitulé veggies3. Cette copie est une copie récurrente, comme l'indique l'option -r. Si vous essayez de copier un répertoire sans utiliser cette option, un message d'erreur apparaît.

Suppression de répertoires (rmdir)

Pour supprimer un répertoire vide, utilisez la commande rmdir de la façon suivante :

$ rmdir veggies3
$ 

Si le répertoire que vous souhaitez supprimer contient encore des fichiers ou des sous-répertoires, la commande rmdir ne supprimera pas ce répertoire.

Utilisez la commande rm -r (en ajoutant l'option récurrente -r à la commande rm) pour supprimer tout le contenu d'un répertoire, y compris les sous-répertoires et leurs fichiers, en procédant de la façon suivante :

$ rm -r veggies3
$


Attention : Attention :

Graphicles répertoires qui ont été supprimés avec la commande rmdir ne pourront pas être restaurés, ni ceux qui ont été supprimés, avec leur contenu, par la commande rm -r.


Recherche de différences entre fichiers (diff)

Souvent, plusieurs utilisateurs ayant accès à un fichier effectuent des copies de ce fichier en y apportant des modifications. La commande diff vous indique les différences rencontrées entre les versions d'un fichier ASCII. La commande suivante :

$ diff leftfile rightfile

balaie chaque ligne des fichiers leftfile et rightfile en recherchant les différences éventuelles. Lorsqu'elle rencontre une ligne (ou des lignes) différente(s), elle détermine si la différence provient de l'ajout, de la suppression ou de la modification d'une ligne, et indique le nombre de lignes concernées, ainsi que leur numéro respectif dans chacun des deux fichiers, suivi du texte correspondant.

Si la différence est due à un ajout, la commande diff affiche une ligne sous la forme suivante :

l[,l] a r[,r]

l désigne un numéro de ligne du fichier leftfile et r un numéro de ligne du fichier rightfile.

Si la différence est due à une suppression, la commande diff affiche la lettre d (delete) au lieu de la lettre a ; s'il s'agit d'une modification de ligne, la commande diff affiche la lettre c (change).

Le texte figurant sur les lignes respectives des deux fichiers suit immédiatement le numéro de ligne. Le texte du fichier leftfile est précédé d'un chevron gauche (<). Le texte du fichier rightfile est précédé d'un chevron droit (>).

L'exemple ci-dessous fait apparaître deux fichiers contenant les différences trouvées par la commande diff :

$ cat progr.15.7.
Semaine du 15/7

Jour:  Heure:      Action :              Détails:

M     10:00        Gest.matériel        une semaine sur deux
M     1:30         Gest.logiciels
J     3:00         Gest.doc
V     1:00         Entretien
$ cat progr.22.7
Semaine du 22/7

Jour: Heure:       Action :              Détails:

L     8:30         Gest.personnel       tous les jours
M     10:00        Gest.matériel        une semaine sur deux
M     1:30         Gest.logiciels
J     3:00         Gest.doc
$ diff progr.15.7 progr.22.7
1c1
< Semaine du 15/7
---
> Semaine du 22/7
4a5
> L     8:30         Gest. personnel      tous les jours
8d8
< V     1:00         Entretien

Si les deux fichiers à comparer sont identiques, la commande diff n'affiche rien.

Cette section ne présente que certaines des options de la commande diff(1). Pour plus d'informations, consultez les man Pages(1): User Commands.

Comparaison de trois fichiers différents (diff3)

Si vous souhaitez comparer simultanément trois versions différentes d'un même fichier, utilisez la commande diff3 de la façon suivante :

$ diff3 fichier1 fichier2 fichier3

diff3 compare les trois versions d'un même fichier et affiche les parties de texte différentes, en utilisant les codes suivants :

==== les trois fichiers sont différents

====1 fichier1 est différent

====2 fichier2 est différent

====3 fichier3 est différent

Utilisation de bdiff sur des fichiers volumineux

Si vous souhaitez comparer des fichiers très volumineux, utilisez la commande bdiff au lieu de diff. Son fonctionnement est similaire à celui de diff :

$ bdiff leftfile rightfile

Utilisez bdiff au lieu de diff pour les fichiers dépassant 3500 lignes.

Recherche de fichiers (find)

La commande find recherche les fichiers répondant aux critères précisés, en partant du répertoire indiqué. Par exemple, vous pouvez rechercher les noms des fichiers dont le nom correspond à un modèle particulier, ou ceux qui ont été modifiés au cours d'une période donnée.

Contrairement à la plupart des commandes, les options de la commande find comportent plusieurs caractères ; le nom du répertoire de départ doit précéder l'intitulé de ces options, comme indiqué sur la ligne de commande suivante :

$ find répertoire options

répertoire désigne le nom du répertoire de départ, et options désigne les options relatives à la commande find.

Chaque option décrit un critère de sélection de fichier. Pour être sélectionné, un fichier doit répondre à l'ensemble des critères indiqués. Ainsi, plus le nombre d'options utilisées est grand, plus la recherche est affinée. L'option -print permet d'afficher les résultats de la recherche. (Comme expliqué ultérieurement, vous pouvez utiliser la commande find pour exécuter des commandes. Dans ce cas, vous pouvez lui demander de ne pas afficher les fichiers sélectionnés, pour éviter la répétition.)

L'option -name nom_ fichier demande à la commande find de sélectionner les fichiers qui correspondent à nom_ fichier. Ici, nom_ fichier est le composant le plus à droite du chemin d'accès complet d'un fichier. A titre d'exemple, le composant le plus à droite du chemin d'accès du fichier /usr/lib/calendar est calendar. Cette partie du nom d'un fichier est souvent appelée nom principal.

Pour afficher la liste des fichiers se terminant par s dans le répertoire courant et dans ses sous-répertoires, tapez :

$ find . -name '*s' -print
./programs
./programs/graphics
./programs/graphics/gks
./src/gks
$

Il existe d'autres options, telles que :

-name nom_ fichier

Sélectionne les fichiers dont le composant le plus à droite correspond à nom_ fichier. Placez nom_ fichier entre apostrophes s'il comporte des paramètres de substitution de nom de fichier.

-user ID_ utilisateur

Sélectionne les fichiers appartenant à ID_ utilisateur. ID_ utilisateur pouvant être un nom de connexion ou un numéro d'ID utilisateur.

-group groupe

Sélectionne les fichiers appartenant à groupe.

-m time n

Sélectionne les fichiers qui ont été modifiés dans une période de n jours.

-newer fichier_contrôle

Sélectionne les fichiers dont la modification est plus récente que celle de fichier_contrôle.

Vous pouvez indiquer un ordre de priorité en groupant les options entre parenthèses (despécialisées) (par exemple, \(options\) ). A l'intérieur de parenthèses despécialisées, vous pouvez utiliser l'indicateur -o entre les options pour que la commande find sélectionne les fichiers répondant à l'une des catégories uniquement, et non aux deux :

$ find . \( -name AAA -o -name BBB \) -print
./AAA
./BBB

Vous pouvez inverser le sens de l'option en la faisant précéder d'un point d'exclamation despécialisé. Dans ce cas, la commande find sélectionne les fichiers pour lesquels l'option ne s'applique pas :

$ find . \!-name BBB -print
./AAA

Vous pouvez également utiliser la commande find pour appliquer des commandes au fichier que celle-ci a sélectionné, en utilisant l'option :

-exec commande '{}' \;

Cette option se termine par un point-virgule despécialisé (\;). Les accolades entre apostrophes sont remplacées par les noms des fichiers sélectionnés par la commande find.

A titre d'exemple, vous pouvez utiliser la commande find pour supprimer automatiquement les fichiers de travail temporaires. Si vous nommez vos répertoires de travail de manière cohérente, vous pouvez utiliser la commande find pour les rechercher et les détruire, où qu'ils se trouvent. Par exemple, si vous nommez vos répertoires de travail junk ou dummy, cette commande les trouvera, puis les supprimera :

$ find . \( -name junk -o -name dummy \) -exec rm '{}' \;

Pour plus d' informations sur find(1), reportez-vous aux man Pages(1): User Commands.

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.