Le système de fichier Unix

Norman Matloff
Department of Computer Science
University of California at Davis

October 19, 1998

Traduit par Lansciac pour Madchat

12 Décembre 2000

Sommaire

1  Introduction
2  Types de fichier
    2.1  Fichiers ordinaires
    2.2  Repertoires
    2.3  Fichiers "peripheriques"
    2.4  Fichiers lien
3  Obtenir des informations a propos de fichiers dans un repertoire donne
4  Les droits et permissions
5  Quelques commandes fichier
    5.1  chmod
    5.2  du et df
    5.3  diff
6 Les caracteres joker

1.  Introduction

Dans Unix, les fichiers sont organises selon une structure en arbre avec une racine nommée par le caractère '/'. Les premiers niveaux de cet arbre ressemblent à cela :

                              /
                              |
                    ---------------------
                   /     |    |    |     \ 
                 etc    bin  usr  tmp    dev  
                         |                | 
                       ------          --------
                      /      \        /        \ 
                     ls ..   csh     ucb ...   lib 
Vos propres fichiers forment un sous-arbre se rattachant a cet arbre. Par exemple, dans beaucoup de systèmes les fichiers des utilisateurs sont des sous-répertoires du répertoire 'Home'a l'intérieur de `usr'; si nous ajoutons les utilisateurs Jack et Jill, par exemple, le répertoire maison de Jack sera /usr/home/jack, et tous ces fichiers seront à l'intérieur de ce sous-arbre, l'énoncé analogue sera expose pour Jill.

Supposez que le répertoire de Jill ressemble a cela :

                             jill
                              |
                    ----------------------
                   /     |     |    |     \
                 hill  water pail story  misc
                         |                |
                       -----           --------
                      /     \             |
                    fresh  salt         rocks
Les noms de fichier peuvent être donnes soit en terme relatif, soit par le chemin complet. Prenons par exemple le fichier 'salt' ci-dessus. Si nous sommes dans le répertoire `water', nous pouvons appeler le fichier en faisant simplement
salt
Si nous sommes dans le répertoire supérieur, celui nomme 'jill', nous devons écrire
water/salt
Si nous sommes dans le repertoire `misc', nous pouvons écrire soit
../salt
soit
~/water/salt
Si nous ne sommes dans aucun des répertoires appartenant au rep 'jill', nous pouvons écrire
~jill/water/salt
Dans tous les cas, l'appel par le chemin complet fonctionnera :
/usr/home/jill/water/salt

2.  Types de fichier

Il y a quatre types de fichiers dans le système de fichier Unix.

2.1  Les fichiers ordinaires

Un fichier ordinaire peut contenir du texte, un programme, ou d'autres données. Ca peut être soit un fichier ASCII, avec chacun de ses octets compris entre 0 et 127, chaine7-bit, ou un fichier binaire, ou toutes les possibilités de valeurs vont de 0 a 255, chaîne 8-bit.

2.2  Fichiers répertoire

Supposez que dans un répertoire x j'ai a, b et c et que b est un répertoire contenant les fichiers u et v. b peut être vu non seulement comme un répertoire, contenant plusieurs fichiers, mais aussi comme un fichier. le fichier b contient des informations concernant le répertoire b; le fichier b contient des informations disant que le répertoire b contient les fichiers u et v, leurs tailles, quand ils ont étaient modifies pour la dernière fois, etc.1

2.3  Fichiers "périphériques"

Sous Unix, les périphériques physiques (imprimantes, écrans etc.) sont représentés pas des "fichiers". Cela est déroutant au premier abord, mais par la suite, ca prend réellement du sens: De cette manière, les mêmes fonctions read() et write() utilisées pour écrire et lire des fichiers réels peuvent être utilisées pour lire et écrire sur ces périphériques.

2.4  Fichiers lien

Supposons que nous avons un fichier nomme X, et que nous tapons

ln X Y

Si nous utilisons la commande ls, un nouveau fichier apparaîtra, Y, comme une copie de X, comme si nous avions tape
cp X Y
Cependant, la difference reside dans le fait que la commande cp cree un nouveau fichier, alors que la commande ln donne tout simplement un autre nom a l'ancien fichier. Si nous creons Y en utilisant ln, nous creons simplement un nouveau nom pour le meme fichier physique X (NDT: Pour ceux qui n'auraient pas compris, c'est un peu comme les alias dans les boites de messagerie).

3.  Obtenir des informations sur les fichiers contenus dans un répertoire donné

Les options `a' (``all'') et `l' (``long'') de la commande ls nous donnent un certains nombre d'information sur les fichiers contenus dans le répertoire spécifié (Si nous ne spécifions pas de répertoire, le répertoire courant est utilise par défaut). Prenons un exemple simple en tapant

ls -al
drwxr-xr-x  6 ecs4005      1024 Apr 22 13:30 ./
drwxr-xr-x 74 root         1536 Mar 24 12:51 ../
-rw-------  1 ecs4005       188 Apr 13 15:53 .login
-rw-------  1 ecs4005         6 Mar 24 11:29 .logout
-rw-------  1 ecs4005       253 Apr 10 12:50 .xinitrc
-rw-r--r--  1 ecs4005       516 Apr 10 13:00 .twmrc
-rw-r--r--  1 ecs4005      1600 Apr 22 10:59 test2.out

Le résultat est sépare en six colonnes :

1e colonne - permissions (voir ci-dessous)
2e colonne - nombre de lien du fichier (dans le cas de repertoire)
3e colonne - proprietaire 
4e colonne - taille en octets
5e colonne - date et heure de la derniere modification 
6e colonne - nom 

4. Les droits et permissions

Sous Unix, tous les fichiers sont protégés par un mécanisme de droits d'accès ; ainsi, un propriétaire de fichier peut interdire l'accès a ce fichier a tous les autres utilisateurs. La première colonne permet de connaître les droits sur un fichier, sous la forme d'un masque de dix caractères, par exemple. drwxr-xr-x.

La décomposition du masque donne :

Position 1       type de fichier: d (repertoire) 
                                  - (fichier ordinaire)
                                  l (lien symbolique)
Position 2-4     permissions du proprietaire: r (lire)
                                              w (ecrire)
                                              x (executer)
Position 5-7     permissions pour tous les utilisateurs du même groupe
Position 8-10    permissions pour tous les autres utilisateurs
Notez qu'un tiret (`-') signifie que le droit n'est pas accorde. Prenons cet exemple, r-x signifie que vous pouvez lire et exécuter ce fichier, mais vous n'êtes pas autorise à écrire dans ce fichier.

Pour supprimer un fichier, vous devez avoir la permission d'écriture.

De même, pour pouvoir lister un répertoire, il est nécessaire d'avoir la permission de lire ce répertoire. Pour accéder a un fichier contenu dans un répertoire (lire, écrire ou exécuter le fichier), vous avez besoin de la permission exécuter dans le répertoire.

5.  Quelques commandes fichier

5.1  chmod

Vous pouvez utiliser cette commande pour changer les permissions de n'importe quel fichier dont vous êtes propriétaire. La notation usitée est :

          u       user (i.e. proprietaire)
          g       group 
          o       others
          +       Ajout de permission
          -       Suppression de permission
          r       Lire
          w       ecrire
          x       executer

Exemple :

chmod ugo+rw .login
ajoutera les droits lire et écrire a tous les utilisateurs pour le fichier .login.

Dans certains cas, c'est très utile pour se supprimer les droits d'écriture sur un fichier, par exemple pour être sur que vous ne supprimerez jamais un fichier par erreur.

5.2  du and df

La commande du affiche la taille en kilo octets de tous les fichiers du répertoire spécifié, et le total de l'espace occupe par ce fichier; s'il n'y a pas de répertoire spécifié, le répertoire courrant est pris par défaut.

La commande df affiche le total de l'espace disponible sur vos disques durs.

5.3  diff

Cette commande affiche ligne par ligne la différence entre 2 fichiers ASCII. Si par exemple, vous avez deux versions d'un fichier source C et que vous ne vous souvenez plus en quoi la nouvelle version diffère de l'ancienne, vous pouvez taper

diff oldprog.c newprog.c

6.  Les caracteres joker

Il y a deux caracteres joker pour Unix, `*' et `?'.

'*' peut etre associe a n'importe quelle chaîne de caractère. Par exemple,

rm *.c
supprimera tous les fichiers du répertoire courant dont le nom se termine par '.c'.

`?' peut etre utilise pour remplacer un seul caractère. Par exemple,

rm x?b.c
supprimera tous les fichiers composes de 5 caractères, dont le premier sera`x' et les 3 derniers `b.c'. Les fichiers x3b.c et xrb.c seront supprimes, alors que le fichier xuvb.c ne le sera pas.

En complément,

[0-9] comprends tous les caracteres compris entre `0' et `9'
[a-z] comprends tous les caracteres compris entre `a' et `z'
Par exemple,
rm test[1-3].c 
supprimera test1.c, test2.c et 3.c mais pas test4.c.

 


Footnotes :

1 La commande ls obtient les informations sur le repertoire b en lisant le fichier b.


File translated from TEX by TTH,    version 1.1.

Traduit par Lansciac