Tutoriel sur les systèmes de fichiers sous unix
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
|