II. Système de fichiers
1. Les fichiers
a. Fichier ordinaire
b. Fonctionnalités supplémentaires
c. Noms de fichiers
2. Les inodes
a. Les informations des inodes
b. Adressage des blocs de données
3. Les répertoires
a. Le répertoire simple
b. Représentation logique du système de fichier
4. Droits d'accès
a. Système de fichiers
b. Organisation des groupes de cylindres

II. Système de fichiers
1. Les fichiers
Sous Unix un fichier est :
  • toujours désigné par un nom.
  • possède un unique inode (certaines informations concernant le fichier).
  • possède les fonctionnalités suivantes :
    • ouverture.
    • fermeture.
    • lecture (consultation).
    • écriture (modification)
Un fichier peut Ítre :
  • ordinaire (on utilise parfois le terme "normal") (-)
  • un répertoire (d)
  • un lien symbolique (l)
  • un pseudo-fichier :
    • accès caractère par caractère (c)
    • dispositif de communication (p)
    • accès par bloc (b)
a. Fichier ordinaire
Un fichier ordinaire est caractérisé par :
  • son contenu vu comme une suite d'octets (i.e. caractères).
  • après l'ouverture l'accès s'effectue au niveau du pointeur du fichier.
    0 1 2 3 4 5 6 7 8 9 ...
    P R O G R A M _ T R I
b. Fonctionnalités supplémentaires c. Noms de fichiers
Unix fait la différence entre les majuscules et les minuscules (la casse). En théorie tous les caractères du clavier sont autorisés. En pratique, il vaut mieux s'abstenir pour certains (comme * ou ?) . Le caractère - est déconseillé au début d'un nom de fichier (certaines commandes pourraient l'interpréter comme une option).

2. Les inodes
Un UFS est toujours muni d'une table des inodes.
Table des inodes
Tout fichier possède son unique inode.
  • L'inode contient la totalité des informations sur le fichier, sauf le nom.
  • Les inodes sont tous de mÍme taille.
a. Les informations des inodes
Remarque :
Un fichier peut avoir plusieurs liens donc plusieurs noms. Il suffit pour cela qu'ils pointent sur le mÍme inode (celui du fichier).
b. Adressage des blocs de données
Une liste de 13 adresses :
  • Direct pour les 10 premières adresses.
  • Indirect pour la onzième entrée.
  • A deux niveaux d'indirection pour la douzième entrée.
  • A trois niveaux d'indirection pour la dernière entrée.
Un bloc de données peut contenir jusqu'à 128 adresses.

3. Les répertoires
a. Le répertoire simple
Comme tout fichier, un répertoire possède son inode.
Le contenu du répertoire représente la correspondance entre les noms de fichiers et les inodes. Les noms " . " et " .. "figurent dans tout répertoire. " . " correspond au répertoire courant et " .. " au répertoire supérieur (ou répertoire parent).
Nom Numéro d'inode
.
..

bin
dev
home
...
2
2
3
5
9
Commande pour ajouter un nouveau lien :
ln nom nom_supplémentaire
ln ancien nouveau = création d'un nouveau lien
cp ancien nouveau = copie de fichier
mv ancien nouveau = renomme ancien en nouveau (déplacement)

Exemple :
Répertoire courant /home/linf13
ln /bin/chmod droits

Lien symbolique : ln -s ancien nouveau
b. Représentation logique du système de fichiers
C'est une arborescence, plus généralement un graphe orienté sans cycle. Représentation logique du système de fichiers
Convention : le système de fichier commence à l'inode 2.
  • A chaque passage dans la table des inodes on trace un arc.
  • La désignation d'un chemin peut Ítre :
    • absolu :on écrit " / " à chaque passage dans la table des inodes. Par exemple : /home/linf0/dir.
    • relatif :par exemple : si le répertoire courant est /home il suffit de taper linf0 pour accéder à /home/linf0.
4. Droits d'accès.
La commande ls -l permet d'avoir une liste détaillée indiquant, entre autres, les droits d'accès.
Spécial user group other
Set UID Set GID Sticky rwx rwx rwx
Fichier Répertoire
r Lecture autorisée Lecture de la totalité du répertoire possible mais en absence de ce droit, on peut accéder à une entrée individuelle. Ainsi on peut lire un fichier dans un répertoire privé du droit de lecture.
w Ecriture autorisée On peut créer ou supprimer les fichiers du répertoire.
x Exécution autorisée En absence de ce droit, aucun accès au répertoire et a la sous arborescence issue du répertoire n'est possible.

Fichier Répertoire
Sticky Bit Un programme executable sera maintenu en zone de swap après la fin de son exécution. Un fichier du répertoire ne peut Ítre supprimé que par son propriétaire.
Set GID Set GID si le fichier est exécutable sinon verrouillage obligatoire. Les fichiers (y compris les répertoires) créés dans le répertoire héritent du GID du répertoire.
Set UID Set UID si le fichier est exécutable. Les fichiers (y compris les répertoires) créés dans le répertoire héritent du UID du répertoire.
Normalement l'UID d'un processus est l'UID du créateur.
  • Si Set UID=1 alors l'UID du processus engendré à partir d'un fichier est l'UID du fichier.
  • Si Set UID=0 alors c'est l'UID du root (administrateur système).
Pour modifier des droits on utilise la commande chmod :
  • Options :
    • -r descente récursive d'une sous-arborescence.
    • -f fonctionnement silencieux.
  • Mode :
    • numérique : codage en octal de bits de permission.
    • symbolique : | u | g | o | a | + | - | = | r | w | x | S | l | t |
Exemple :
gauss% chmod 644 fichier
Autorise la lecture et l'écriture sur le fichier pour le propriétaire, mais n'autorise que la lecture pour les autres.
gauss% chmod 1777 répertoire
Autorise la lecture, l'écriture et l'exécution (ici l'accès) du répertoire pour tout le monde. Le premier chiffre correspond à l'octet du Set UID, Set GID, Sticky. Ici on met le Sticky Bit a 1.
gauss% chmod go-rx fichier
gauss% chmod +t répertoire # identique à u+t, g+t, o+t
gauss% chmod ug=xs programme
gauss% chmod +l fichier # identique à u+l, g+l, o+l
gauss% chmod ug=S programme # illicite
gauss% chmod g+xl programme # illicite
gauss% chmod ug+x, o-r fichier
a. Système de fichiers

df : commande utile pour les systèmes de fichiers.
mount : pour ajouter ("greffer ") un système de fichiers supplémentaire.
Greffe
Remarque :
" Greffer " sur un répertoire non-vide fait perdre l'accès au contenu.
Le montage peut Ítre:
  • manuel (mount)
  • automatique (automount). Connexion à distance à autre machine par exemple.
Un numéro de système de fichier + un numéro d'inode = un fichier unique.

Structure du système de fichier :
Structure du système de fichier
Remarque :
Un UFS correspond à une partition.
Type de blocs sur un disque
Boot block
  • Contient le programme de démarrage du système
  • Occupe le secteur 0 à 15
Superblock
  • Contient des informations vitales pour le système de fichier (état, table d'inodes, nombre de cylindres par groupe, etc.)
  • Est répliqué dans chaque groupe de cylindre (dans un emplacement diffèrent à chaque fois)
Inode Mis à part le nom, contient toutes les infos sur un fichier
Data blocks Utilisés pour le stockage du contenu des fichiers
Cylindres groupe map Liste les blocs libres, leurs tailles, et d'autres informations

b. Organisation des groupes de cylindres
Cylindre groupe 0 Cylindre groupe 1 Cylindre groupe 2 Cylindre groupe 3 .....
Boot block

Superblock
Cylindre
groupe map

Inodes
Data blocks



Cylindre
groupe map

Inodes
Superblock
Data blocks



Boot block

Inodes
Cylindre
groupe map

Boot block

Data blocks



Superblock
Data blocks



Boot block

Inodes
Superblock
Cylindre
groupe map

.....