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 Introduction1. 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 ... libVos 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 rocksLes 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
saltSi nous sommes dans le répertoire supérieur, celui nomme 'jill', nous devons écrire
water/saltSi nous sommes dans le repertoire `misc', nous pouvons écrire soit
../saltsoit
~/water/saltSi nous ne sommes dans aucun des répertoires appartenant au rep 'jill', nous pouvons écrire
~jill/water/saltDans 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 tapecp X YCependant, 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 utilisateursNotez 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 .loginajoutera 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.
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.
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 *.csupprimera 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.csupprimera 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].csupprimera 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