Systèmes de fichiers LINUX
Sous LINUX, TOUT EST FICHIER,
organisé suivant une UNIQUE ARBORESCENCE
(dont la racine est nommée /
et dont l'administrateur est root
)
Systèmes de fichiers
Un système de fichiers est une façon d'organiser et de stocker une arborescence sur un
support (disque, disquette, cd ...). Chaque OS propriétaire a développé
sa propre organisation.
On peut faire cohabiter plusieurs systèmes dans des partitions
d'un même disque.
Linux possède son système appelé ext2 mais
peut en gérer d'autres. La liste en est donnée dans /proc/filesystems
L'utilisateur peut donc accéder sous Linux à d'autres systèmes de fichiers, comme DOS, Vfat,..provenant d'un périphérique ou importé par le réseau.
Comme pour l'utilisateur tout est fichier, tous les systèmes de fichiers quels que soient leur emplacement physique doivent être intégrés dans l'UNIQUE arborescence logique du système Linux.
Cette arborescence peut donc être construite (et évoluer) à partir de diverses partitions qui peuvent être situées sur plusieurs disques. Cela réalise une intégration et une abstraction plus poussée que dans le monde Windows où les partitions et lecteurs auquels sont affectées les lettres A: C: D: ... demeurent des entités séparées.
Naturellement la partition sur laquelle est situé le répertoire racine joue un rôle particulier.
Le processus de montage, avec sa commande mount
, décrite plus loin, est le moyen de faire correspondre parties de l'arborescence et partitions physiques de disque. Il permet de plus d'affecter tout système extérieur (disquette, cdrom, dk zip, rép. réseau ...) à un répertoire créé pour cela dans l'arborescence.
Il suffira ensuite de se déplacer à ce répertoire, appelé point de montage, en fait un répertoire "d'accrochage", pour accéder à ses fichiers (bien sûr, conformément aux permissions que possède l'utilisateur )
Les différentes catégories de fichiers
- fichiers normaux
* texte : courrier, sources des programmes, scripts, configuration ...
* exécutables : programmes en code binaire
- fichiers répertoires
ce sont des fichiers conteneurs qui contiennent des références à d'autres fichiers.
véritable charpente de l'arborescence, ils permettent d'organiser les fichiers par catégories
- fichiers spéciaux
situés dans /dev
, ce sont les points d'accès préparés par le système aux périphériques.
Le montage va réaliser une correspondance de ces fichiers spéciaux vers leur répertoire "point de montage".
par exemple, le fichier /dev/hda
permet l'accès et le chargement du 1er disque IDE
- fichiers liens symboliques
Ce sont des fichiers qui ne contiennent qu'une référence (un pointeur) à un autre fichier.
Cela permet d'utiliser un même fichier sous plusieurs noms sans avoir à le dupliquer sur le disque.
Arborescence du système Linux
La racine est le sommet de la hiérarchie des répertoires.
Il s'agit d'une arborescence logique, indépendante de l'implantation physique des divers sous-répertoires, qui peut s'étendre sur plusieurs partitions incluses sur un ou plusieurs disques, et même sur des disques réseaux.
Sa structure est standard, avec des extensions imposées par
les distributions.
Toute modification est de la compétence exclusive de l'administrateur,
à l'exception des répertoires personnels situés dans
/home.
Il est recommendé de respecter cette architecture standard.
Liste des répertoires principaux et leur rôle :
/ le répertoire racine
-
/bin les fichiers exécutables
(en binaire) (initialisation du système + commandes "essentielles")
-
/boot le noyau
vmlinuz
et les fichiers de démarrage
-
/dev répertoire de fichiers spéciaux, qui servent de canaux de communication avec les périphériques (disques, adaptateur réseau, cartes son etc...)
-
/etc les fichiers de configuration
du système et les principaux scripts de paramétrage
- /etc/rc.d scripts de démarrage du système
- /etc/X11 scripts de configuration du serveur X
- /etc/sysconfig configuration des périphériques
- /etc/cron description des tâches périodiques à effectuer
- /etc/skel fichiers recopiés dans le rép. personnel d'un nouvel utilisateur
-
/home la racine des répertoires personnels des
utilisateurs
-
/lib les bibliothèques
et les modules du noyau
-
/mnt la racine des points de montage des
systèmes de fichiers périphériques ou extérieurs
(cd, disquette, nfs ..).
-
/opt lieu d'installation d'applications supplémentaires (comme starOffice, java ..)
-
/root répertoire personnel du super-utilisateur
root
-
/sbin les fichiers exécutables pour
l'administration du système
-
/tmp stockage des fichiers temporaires
-
/usr programmes accessibles à
tout utilisateur; sa structure reproduit celle de la racine /
-
/var données variables liées
à la machine (fichiers d'impression, traces de connexions http,
smb .. dans /var/log)
-
/proc ce pseudo-répertoire contient une "image" du système (
/proc/kcore
est l'image de la RAM
Parcourir et lister les répertoires
Voici les commandes indispensables (suivies bien sûr d'une validation)
pour visiter l'arborescence.
ls commande générale
d'accès aux infos des fichiers du rép. courant
essayer ls, puis successivement
ls -l, ls -a
ls rep
cd chemin le chemin peut être
absolu (indiqué à partir de la racine) ou relatif (à
partir du rép. courant)
cd ..
cd raccourci vers
le rép. personnel
file fichier renseigne sur la nature
du contenu du fichier
pwd donne le nom
complet du rép. courant
mkdir rep pour créer
un sous-rep du rep courant
rmdir rep pour supprimer
un sous-rep vide
Expérimentations
Faire de nombreux essais avec ces commandes.
Faire le lien entre la commande file
et
le 1er caractère affiché sur chaque ligne par ls -l
Un utilisateur stagex
peut-il créer des rép. un
peu partout ? essayer par exemple dans /etc
ou dans /usr
Monter un système de fichiers
- Comme le système de fichiers Linux se concentre dans une seule arborescence de fichiers, l'accès et l'utilisation de systèmes extérieurs (disques, disquettes, cd ..) doit s'effectuer par intégration de ces systèmes de fichiers dans le système fondamental "racine".
Ce mécanisme d'intégration, souple et paramétrable, s'appelle le montage.
- Techniquement, l'opération de montage consiste à mettre en relation :
- un fichier de périphérique situé dans
/dev
(qui permet la communication physique avec les données du périphérique)
- avec un noeud d'insertion dans l'arborescence, appelé son
point de montage
- Naturellement le montage fondamental est celui du répertoire racine. Celui-ci a dû être déclaré (obligatoirement) après le partitionnement des disques et avant toute installation sur disque !
- Il est fondamental de bien comprendre ce concept : il conditionne tout accès à une ressource externe, en particulier à des ressources réseau à d'autres disques Linux (voir le processus d'exportation NFS chez le serveur, complémentaire du montage chez le client de la ressource)
Commandes de montage/démontage
- Il est toujours possible de monter "à la main" les systèmes
de fichiers stockés sur les périphériques disques,
cd ... avec la commande interactive mount/umount
-
Syntaxe générale :
mount -t <type > -o options /dev/rep-spécial /mnt/rep-montage
Si cette description est présente dans le fichier /etc/fstab,
la commande peut être simplifiée
mount /dev/rep-spécial
ou mount /mnt/rep-montage
- Les types principaux
ext2 (type par défaut), vfat, FAT16 ou FAT32 de Win95 ou Win98, nfs, système de fichiers distant situé sur un serveur NFS
- Les options
les options par défaut sont:
rw (accès complet), suid (les éventuels permissions SUID et SGID des fichiers seront pris en compte), dev (permettre l'utilsation des fichiers de périphériques, exec (permettre l'exécution de fichiers binaires)
- Exemples
- mount
liste tous les systèmes de fichiers actuellement montés
mount -a
monter tous les systèmes au démarrage, exécute /etc/rc.d/rc.sysinit
-
mount /dev/cdrom
monte le système du cd-rom
(si décrit dans fstab)
umount /mnt/floppy
démonte le système de
fichiers disquette
mount -t vfat -o uid=5001,gid=5000,umask=022 /dev/hda1 /mnt/disk-c
monter la partition Windows occupant la 1ère partition /dev/hda1
dans le rép. /mnt/disk-c
, acev les options : l'utilisateur d'uid 5001, et le groupe de gid 500, seront propriétaires de tous les fichiers, la création d'un fichier s'effectuera avec le umask 022, c'est-à-dire les permissions 755 (rwxr-xr-x)
.
Gestion avec Linuxconf
Installer une nouvelle partition
Dans certains cas il peut s'avérer indispensable d'étendre le système de fichiers sur un nouveau disque dur, ou une partition récupérée ...
L'objectif consiste à assigner à une sous-arborescence du système de fichiers, cette nouvelle ressource périphérique, par le processus de montage.
Soit une nouvelle partition /dev/hda3
, jusqu'ici "libre", à monter sur /home
.
- Avec fdisk, lui affecter un système 83 linux
- La formater
mkfs -t ext2 -c -v /dev/hda3
formate en blocs de 1024 en vérifiant les blocs(-c), puis écrit la table des inodes.
- effectuer une copie
cp -r /home /root
le déplacement de /home
, dans /root par exemple. En effet /home est présent actuellement sur hda1
, et il va être ensuite physiquement affecté sur hda3
Les rép. personnels sont actuellement dans /root/home
- monter la partition
hda3
en /home
mount /dev/hda3 /home
Expliquer les résultats des commandes :
df
ll /home
- récupérer le contenu de
/home
mv /root/home/* /home
- pour automatiser le montage de
/dev/hda3
lors d'un redémarrage du système,
ajouter dans la table de montage /etc/fstab
la ligne :
/dev/hda3 /home ext2 defaults 1 2
Compléments
Le fichier /etc/fstab
Rappel :
Le processus init (exécuté au démarrage),
après chargement du noyau, vérifie les systèmes de
fichiers déclarés dans la table du fichier et effectue
leur éventuel montage automatique.
Ce fichier /etc/fstab
constitue une véritable "table de
montage". Il fait l'inventaire des divers systèmes de fichiers que
le noyau Linux est susceptible de gérer, précise la façon
de les monter, s'ils doivent l'être au démarrage, etc ..
Structure de fstab
Sur chaque ligne on trouve la description du montage d'un système, avec 6 champs :
- nom du fichier spécial (ou du système distant)
- nom du point de montage, habituellement un sous-rep (éventuellement
à créer) de /mnt
- le type de fichiers : ext2 (Linux), msdos, vfat (Win9x), ntfs (NT), iso9660 (Cd-rom), nfs
- liste d'options de montage, séparés par des virgules
Les options par défaut sont rw,suid, dev, exec, auto, nouser
- auto/noauto , pour demander/empêcher un montage automatique au démarrage
- user/nouser, pour autoriser/interdire un user qq (pas le "root") à effectuer le montage
- paramètre pour
dump
(commande de sauvegarde)
Une valeur 0 signifie que le système de fichiers ne sera pas sauvegardé lors d'un dump
- paramètre pour (commande de vérification des fichiers)
Il indique l'ordre dans lequel fsck
devra vérifier les fichiers, 1 en priorité (c'est normalement la partition racine /, 2 sinon, et 0 pour ne pas demander de vérification.
exemple 1
/dev/hda1 /mnt/diskc vfat
user, auto,rw
signifie :
/dev/hda1 est le descripteur de périphérique 1ère
partition du 1er disque IDE
/mnt/diskc est le répertoire de montage
vfat est le type de système de fichiers (autres ext2, msdos,
iso9660, nfs, swap)
exemple 2
/dev/hdb1 /mnt/disk_d vfat
user, auto
au lancement du système, ou par la commande mount -a, le système
de fichiers Windows 95, installé sur la 1ère partition du
2ème disque (unité D:\), sera monté automatiquement
par tous les utilisateurs et accessible dans le répertoire /mnt/disk_d
remarques
Les lignes contenant l'option noauto ne sont pas montées
lors du démarrage du système, mais sont utiles pour renseigner
sur les paramètres à appliquer lorsqu'on effectuera le montage.
L'option user est nécessaire pour indiquer que n'importe
quel utilisateur pourra monter et démonter le périphérique;
sinon cette tâche est réservé au root.
Pour le montage de système distant
nfs,
les options rsize et wsize sont optionnelles, mais permettent
d'augmenter sensiblement les performances.
Expérimentations
- Editer /
etc/fstab
et comprendre ses directives
- Monter et démonter "à la main" le périphérique
/dev/cdrom. Peut-on enlever le cd-rom avant de le démonter ?
- Faire les mêmes manip sous X-KDE
Les inodes
Chaque système de fichiers tient à jour une table des descripteurs
des fichiers qu'utilise le système d'exploitation pour accéder
aux fichiers.
Cette table se compose pour chaque fichier, d'une entrée appelée
inode,
repérée par un index appelé le numéro d'inode
La liste des systèmes de fichiers gérés par Linux
est visible sur /proc/filesystems
Il existe un outil de vérification et de réparation des
systèmes : fsck, qui s'effectue sur un système ou
sous-systèmes, un rép. obligatoirement démonté
par exemple, pour vérifier le rép. des users : fsck
/home
Les fichiers spéciaux de /dev
comporte l'attribut b (mode bloc)
ou c (mode caractères)
Les liens (ln)
Les liens sont utiles pour faire apparaître un même fichier dans plusieurs répertoires, ou sous des noms différents. Ils évitent les duplications et assurent la cohérence des mises à jour
On distingue en fait deux sortes de liens :
- les liens durs associent deux ou plusieurs fichiers à un même espace sur le disque, les deux fichiers restant indépendants. Par exemple :
ln linux.txt /home/stagex/linux-lien-dur.txt
Le fichier linux-test-lien-dur est créé dans le répertoire /home/stagex.
On peut constater que ces 2 fichiers ont la même taille.
Au niveau gestion ils sont indépendants, tout en partageant le même espace disque et donc le même inode.
Toute modification de l'un, modifie l'autre ! Mais la suppression de l'un, casse le lien, mais ne supprime pas physiquement l'autre.
- Les liens symboliques
[root@p0x /home/httpd/html/LinuxCours] ln -s index.html /home/jean/accueil.html
La commande ls -F
passée dans le répertoire /home/jean
montre que le fichier accueil.html
pointe sur index.html
(ainsi, une requête sur accueil.html
, va ouvrir index.html
Le lien symbolique fait référence à un fichier dans un répertoire. La suppression du fichier source entraînera un changement de comportement du fichier lien qui sera considéré comme "cassé" ("broken").
Observations
Passez les commandes adduser
et useradd
: elles semblent identiques, puisqu'on obtient le même message d'aide !
Pour comprendre :
- cherchez où elles se trouvent :
whereis
...
- examiner ces 2 fichiers :
ls -l add*
et ls -l user*
- comparez les tailles, les droits. Conclusion.