Cours LINUX(UNIX)
LE SYSTEME DE FICHIERS
D'UNIX
I/ Structure du système de fichier
Définition :
Un fichier est une suite d'octets, stockées sur une mémoire auxiliaire. Le système UNIX distingue plusieurs
types de fichiers.
Les fichiers normaux (ordinary files)
Les fichiers répertoires (répertoire ou directory)
Les fichiers spéciaux (special files ou devices)
Chaque fichier possède un nom, un contenu, un endroit où se trouve, sont propriétaire, sa taille et les
personnes qui peuvent y accéder.
I-1/ les fichiers normaux :
Contiennent soit des textes soit des programmes exécutables.
I-2/ les fichiers répertoires :
Permettent d'organiser l'espace du disque dur. Les fichiers normaux sont regroupés dans des répertoires.
Ces répertoires peuvent contenir eux-mêmes des sous-répertoires, des fichiers normaux et des fichiers
spéciaux.
I-3/ les fichiers spéciaux :
Représentent les interfaces avec les périphériques gérés par le système d'exploitation. Exemple : console,
imprimante et disque.
dev etc boot lib temp media home opt var
user1 user2 user3 user4
travaille test
[Link]
1
Cours LINUX(UNIX)
/boot : Premier programme exécuté par la machine, il permet de lancer UNIX.
/bin : Contient les utilitaires et programmes exécutables comme cat, date, wc, who, ...
/dev : Contient les fichiers spéciaux qui représentent des périphériques comme console, ttyxx,
lp, ...
/etc : Contient des programmes et fichiers de données pour l'administration du système
comme le fichier des mots de passe "passwd" et le fichier des membres de chaque groupe
d'utilisateur group.
/lib : Bibliothèque de programmes et de langages.
/tmp : contient des fichiers temporaires
/home : /userx : Répertoire de l'utilisateur userx.
II/ Répertoire de travail
Au moment du login, l'utilisateur est placé sur un répertoire propre à lui, relié au répertoire
système /home. On appelle ce répertoire, le répertoire de départ ou répertoire de connexion.
A partir de son répertoire de départ, tout utilisateur peut créer ou modifier ses propres fichiers
et répertoires qui doivent être situés dans la partie inférieure de l'arborescence à partir du
répertoire de départ. L'utilisateur peut aussi remonter le système de fichiers jusqu'à la racine
ou se positionner sur un répertoire issu de son répertoire appelé répertoire de travail ou
répertoire courant. Chaque fichier ou répertoire est décrit par son chemin d'accès par rapport
au répertoire courant ou par rapport à la racine.
Exemple de chemin d’accès :
/home/user2/fich1 : Chemin d'accès de fich1 par rapport à la racine.
fich1 : Chemin d'accès de fich1 par rapport au répertoire de connexion d’user2.
Pour connaître le répertoire courant, ou le répertoire de travail, on dispose de la commande
pwd.
$ pwd
/home/mohamed
2
Cours LINUX(UNIX)
Pour se déplacer dans l'arborescence et changer de répertoire, on utilise la commande cd
suivie du chemin d'accès du répertoire.
$cd /media/cdrom
$pwd
$/media/cdrom
$cd /usr/spool
$pwd
$/usr/spool
Pour remonter d'un niveau dans l’arborescence :
$pwd
$/media/cdrom
$cd ..
$pwd
$/media
III/ La manipulation des répertoires
III-1/création d'un répertoire
Pour créer un répertoire, on utilise la commande mkdir suivie du nom du répertoire (ou des
noms des répertoires) à créer
$mkdir trav
$mkdir temps pers
III-2/ contenu d'un répertoire
La commande ls permet de lister le contenu d'un répertoire en fichiers et sous-répertoire sans
distinction
3
Cours LINUX(UNIX)
Exemple :
$ ls
bin etc lib mnt root selinux test var boot home lost+found
opt run srv tmp vmlinuz dev [Link] media proc sbin sys
usr
Pour distinguer entre les fichiers et les répertoires on utilise ls avec l'option -p. Dans ce cas les
répertoires serons terminés par /
Exemple :
$ ls -p
Bin/ etc/ lib/ mnt/ root/ selinux/ test/ var/ boot/ home/
lost+found/ opt/ run/ srv/ tmp/ vmlinuz dev/ [Link]
media/ proc/ sbin/ sys/ usr/
Pour obtenir une description plus détaillée du contenu du répertoire, on utilise ls avec l'option
-l.
$ ls -l
total 80
drwxr-xr-x 2 root root 4096 Oct 20 16:45 bin
drwxr-xr-x 3 root root 4096 Oct 20 17:22 boot
drwxr-xr-x 15 root root 4280 Oct 20 16:47 dev
drwxr-xr-x 80 root root 4096 Oct 20 17:40 etc
drwxr-xr-x 4 root root 4096 Oct 20 17:40 home
lrwxrwxrwx 1 root root 34 Oct 20 16:42 [Link] ->
/boot/[Link]-3.11.0-15-generic
drwxr-xr-x 17 root root 4096 Oct 20 16:45 lib
drwx------ 2 root root 16384 Oct 20 16:41 lost+found
drwxr-xr-x 4 root root 4096 Oct 20 16:42 media
drwxr-xr-x 3 root root 4096 Oct 20 16:47 mnt
drwxr-xr-x 2 root root 4096 Oct 20 16:48 opt
dr-xr-xr-x 115 root root 0 Oct 20 16:47 proc
drwx------ 2 root root 4096 Oct 20 16:41 root
drwxr-xr-x 14 root root 520 Oct 20 17:23 run
drwxr-xr-x 2 root root 4096 Oct 20 16:47 sbin
drwxr-xr-x 2 root root 4096 Mar 5 2012 selinux
drwxr-xr-x 2 root root 4096 Oct 20 16:41 srv
dr-xr-xr-x 13 root root 0 Oct 20 16:47 sys
drwxrwxrwx 2 mohamed root 4096 Oct 20 17:41 test
drwxrwxrwt 7 root root 4096 Oct 20 18:17 tmp
drwxr-xr-x 10 root root 4096 Oct 20 16:41 usr
drwxr-xr-x 11 root root 4096 Oct 20 16:41 var
lrwxrwxrwx 1 root root 30 Oct 20 16:42 vmlinuz -> boot/vmlinuz-
3.11.0-15-generic
4
Cours LINUX(UNIX)
La première colonne représente le mode du fichier : si le premier caractère est
d : répertoire
-: fichier ordinaire
b,c,p: fichier spécial.
Les neufs (9) caractères du champ mode décrivent les permissions accordées à ces fichiers et
répertoires (à voir ultérieurement). Ensuite, on obtient le nombre d'octets dans chaque fichier
et répertoire, la et l'heure de sa dernière modification et son nom.
Dans le cas d'un fichier spécial, le champ indiquant le nombre d'octets est remplacé par deux
paramètres, le numéro majeur et le numéro mineur. Le numéro majeur permet de codifier le
type du périphérique (exemple : 0 pour console, 1 pour les terminaux tty, 2 pour les disques
....etc.) tandis que le numéro mineur permet de différencier les périphériques de même type
par des chiffres distincts.
$ ls –l /dev/
crw-rw---- 1 root video 10, 175 Oct 20 16:47 agpgart
crw------T 1 root root 10, 235 Oct 20 16:47 autofs
drwxr-xr-x 2 root root 660 Oct 20 16:47 block
drwxr-xr-x 2 root root 100 Oct 20 16:47 bsg
crw------T 1 root root 10, 234 Oct 20 16:47 btrfs-control
drwxr-xr-x 3 root root 60 Oct 20 16:47 bus
lrwxrwxrwx 1 root root 3 Oct 20 16:47 cdrom -> sr1
lrwxrwxrwx 1 root root 3 Oct 20 16:47 cdrom1 -> sr1
lrwxrwxrwx 1 root root 3 Oct 20 16:47 cdrw -> sr1
lrwxrwxrwx 1 root root 3 Oct 20 16:47 cdrw1 -> sr1
drwxr-xr-x 2 root root 3480 Oct 20 16:47 char
crw------- 1 root root 5, 1 Oct 20 16:47 console
lrwxrwxrwx 1 root root 11 Oct 20 16:47 core ->
/proc/kcore
drwxr-xr-x 2 root root 60 Oct 20 16:47 cpu
crw------- 1 root root 10, 60 Oct 20 16:47 cpu_dma_latency
drwxr-xr-x 5 root root 100 Oct 20 16:47 disk
drwxr-xr-x 2 root root 80 Oct 20 16:47 dri
lrwxrwxrwx 1 root root 3 Oct 20 16:47 dvd -> sr1
lrwxrwxrwx 1 root root 3 Oct 20 16:47 dvd1 -> sr1
lrwxrwxrwx 1 root root 3 Oct 20 16:47 dvdrw -> sr1
lrwxrwxrwx 1 root root 3 Oct 20 16:47 dvdrw1 -> sr1
crw------- 1 root root 10, 61 Oct 20 16:47 ecryptfs
lrwxrwxrwx 1 root root 13 Oct 20 16:47 fd ->
/proc/self/fd
brw-rw---- 1 root floppy 2, 0 Oct 20 16:47 fd0
crw-rw-rw- 1 root root 1, 7 Oct 20 16:47 full
crw-rw-rwT 1 root fuse 10, 229 Oct 20 16:47 fuse
crw------- 1 root root 250, 0 Oct 20 16:47 hidraw0
crw------- 1 root root 10, 228 Oct 20 16:47 hpet
III-3/drwxr-xr-x
suppression d'un répertoire
4 root root 220 Oct 20 16:47 input
crw-r--r--
La suppression se 1fait
root
par la root
commande 1, 11 Oct 20 16:47 kmsg
rmdir:
srw-rw-rw- 1 root root 0 Oct 20 16:47 log
brw-rw---- 1 root disk 7, 0 Oct 20 16:47 loop0
Exemple :
brw-rw---- 1 root disk 7, 1 Oct 20 16:47 loop1
brw-rw---- 1 root disk 7, 2 Oct 20 16:47 loop2
brw-rw---- 1 root disk 7, 3 Oct 20 16:47 loop3
brw-rw----
$ls –p 1 root disk 7, 4 Oct 20 16:47 loop4
brw-rw----
test/ test2/1 root disk 7, 5 Oct 20 16:47 loop5
brw-rw----
$rmdir test1 root disk 7, 6 Oct 20 16:47 loop6
brw-rw----
$ls –p 1 root disk 7, 7 Oct 20 16:47 loop7
crw-------
Test2/ 1 root root 10, 237 Oct 20 16:47 loop-control
crw-rw---- 1 root lp 6, 0 Oct 20 16:47 lp0
drwxr-xr-x 2 root root 60 Oct 20 16:47 mapper
crw------- 1 root root 10, 227 Oct 20 16:47 mcelog
crw-r----- 1 root kmem 1, 1 Oct 20 16:47 mem
drwxr-xr-x 2 root root 60 Oct 20 16:47 net
crw------- 1 root root 10, 59 Oct 20 16:47 network_latency
crw------- 1 root root 10, 58 Oct 20 16:47 network_throughput
5 crw-rw-rw- 1 root root 1, 3 Oct 20 16:47 null
crw-rw---- 1 root lp 99, 0 Oct 20 16:47 parport0
crw-r----- 1 root kmem 1, 4 Oct 20 16:47 port
crw------- 1 root root 108, 0 Oct 20 16:47 ppp
Cours LINUX(UNIX)
La même tâche peut être faite avec la commande rm avec l’option -r :
Exemple
$ls –p
test/ test2/
$rm -r test
$ls –p
Test2/
III-4/ taille des répertoires
La commande du (disk usage) fournit la taille en espace disque occupée par les répertoires et les sous-
répertoires.
Sa syntaxe est : « du -option répertoire » les options peuvent êtres:
a: taille de chaque fichier des répertoires en question.
R: générer des messages pour les fichiers ou répertoires non lus
s: seules les tailles totales des répertoires sont données.
Par défaut, la taille de chaque répertoire et sous-répertoire seront données en blocs. La commande du
interprète chaque bloc de 1024 octets en deux blocs de 512 octets (par exemple, un fichier ou répertoire
de 600 octets est interprété comme 2 blocs).
Exemple
$ du -a
0 ./.cache/[Link]-displayed
4 ./.cache
4 ./test
4 ./.bashrc
4 ./.bash_logout
4 ./.bash_history
4 ./.profile
28 .
IV/ La manipulation des fichiers
IV-1/ création simple d'un fichier répertoire
Il est possible de créer un fichier ordinaire soit en utilisant un éditeur de texte comme vi, soit en utilisant
la commande cat et la redirection.
6
Cours LINUX(UNIX)
Exemple :
$ cat > nom du fichier
ligne1
ligne2
^d
Une fois la ligne est validée, tout ce qui sera saisie sera copié sur le fichier qui peut être fermé et
sauvegardé dans le répertoire indiqué en tapant ^d (Ctrl + d).
Exemple :
$ cat > [Link]
ce fichier et composé
de deux ligne
^d
ls -l
total 8
-rw-rw-r-- 1 mohamed mohamed 37 Oct 20 18:57 [Link]
drwxrwxr-x 2 mohamed mohamed 4096 Oct 20 18:49 test
IV-2/ lecture d'un fichier
Il est possible de lire un fichier ordinaire soit en utilisant un éditeur de texte comme vi ou
nano, soit en utilisant la commande cat.
Exemple :
$ cat [Link]
ce fichier et composé
de deux ligne
$
Dans le cas de fichiers volumineux, on remarque que le défilement sur l'écran est rapide.
Donc, il faut y avoir du temps de pause pour l'affichage. Pour cela on peut utiliser la
commande pg.
pg permet l'affichage de un ou plusieurs fichiers page par page.
$pg nom de fichier
pg attend des instructions supplémentaires qui peuvent être:
h: voir toutes les possibilités de pg
L: afficher la ligne suivante
<>: Afficher page suivante
.: afficher la page courante
7
Cours LINUX(UNIX)
f: afficher la page d'après
$: Afficher la dernière page
+iL: Afficher les i lignes suivantes
/chaine/ : Rechercher en avant d'une chaîne
?chaîne?: Rechercher en arrière d'une chaîne
IV-3/ duplication de fichiers
Pour dupliquer un fichier, il suffit d'utiliser la commande cp.
Syntaxe :
$cp source(s) destination
source(s) = un ou plusieurs fichiers
Exemples :
1- copie de deux fichiers sur un autre répertoire en gardant les mêmes noms :
$cp virus fich2 trav
$ls trav
Virus fich2
2- Duplication d'un fichier sur le même répertoire de travail avec un nom diffèrent :
$cp fich2 essai.
$ ls
fich2 essai
3- Duplication d'un répertoire sur un autre :
$cd trav
$cp * /home/userx/pers
$ls /home/userx/pres
fich2 virus
Question : Comment peut-on réaliser le dernier exemple sans changer de répertoire ?
8
Cours LINUX(UNIX)
IV-4/ déplacement de fichiers
Pour déplacer un fichier, il suffit d'utiliser la commande mv (move).
Syntaxe :
$mv source(s) destination
Exemples :
1- Déplacement d'un fichier d'un répertoire a un autre sans changement de nom :
$mv essai trav/essai
$ls trav
essai
2- Déplacement d'un fichier d'un répertoire a un autre avec changement de nom :
$mv trav/essai essai1
$ls
essai1
Attention : Si le fichier de destination existe déjà, la commande mv remplacera son contenu
par celui du fichier source.
IV-5/ suppression de fichiers
Pour supprimer un fichier, on utilise la commande rm (rermove)
Syntaxe :
$rm [-option] fichier(s)
Exemples :
$ls trav
fich2 fich1
$rm trav/fich2
$ls trav
fich1
L'utilisation de l'option i permet au système de poser une question de validation avant
d'effacer le fichier.
9
Cours LINUX(UNIX)
IV-6/ autres opérations sur les fichiers
La commande file permet de tester sur le contenu d'un fichier. Cette commande permet de
deviner le type de fichier invoqué.
Syntaxe :
$file fichier
Exemples :
$ file .bashrc
.bashrc: ASCII English text
$ file /home/
/home/: directory
$ file /dev/sda
/dev/sda: block special
V/ Conclusion :
Dans ce chapitre nous avons étudié le système de fichier d'UNIX du point de vue de
l'utilisateur. En effet, nous avons défini les différents types de fichiers, la structure générale
du système de fichier (organisation hiérarchique des répertoires) et les commandes de base
pour la manipulation du système de fichier d'UNIX. Par contre, nous n'avons pas évoqué la
notion de sécurité qu'offre le système UNIX. Dans le chapitre suivant, on étudiera ce point.
10