next up previous contents index
suivant: 3.5 Les commandes de base monter: 3. Les bases de UNIX précédent: 3.3 Les usagers   Table des matières   Index

Sous-sections


3.4 Le système de fichiers

Dans cette section, nous décrirons les notions élémentaires du système de fichiers utilisé sous UNIX. Nous y étudierons la nomenclature et la structure des objets ainsi que leurs droits d'accès.

Vous viendrez à réaliser que le système UNIX est très orienté vers le concept de fichiers. Contrairement à d'autres systèmes d'exploitation populaires où certaines données sont enregistrées dans un endroit obscur connu seul du système (comme la base de registres de Windows, par exemple), en UNIX tout est fichier.


3.4.1 Les types de fichiers sous UNIX

Il existe plusieurs types de fichiers sous UNIX.

Fichier
Objet contenant des données (texte, image, etc.) ou formant un programme exécutable;
Répertoire
Objet contenant d'autres fichiers (de n'importe quel type);
Périphérique
Objet correspondant à une entité physique à laquelle l'ordinateur est relié, c'est-à-dire une imprimante, l'écran, un modem, un disque dur, etc. Ces fichiers « virtuels » ne sont manipulés que par le système lui-même et vous n'aurez pas à vous en servir.
Lien
« symbolique » ou « physique ». Objet pointant sur un autre. Ceci permet de simuler l'existence de plusieurs copies d'un fichier alors que physiquement, il n'y en qu'une. Les liens symboliques peuvent remplir les mêmes usages que les « raccourcis » de Windows ou les « alias » de MacOS.

Les deux seuls types de fichiers dont il est essentiel de comprendre l'usage sont les fichiers simples et les répertoires. Les deux autres sont plutôt utiles aux utilisateurs avancés, en particulier les fichiers de périphériques. Il existe aussi d'autres types de fichiers, dont nous ne parlerons pas dans ce manuel.


3.4.1.1 Identificateur

Chaque objet contient un identificateur propre (son nom). Le nom du fichier peut être n'importe quelle chaîne de caractères, d'une longueur maximale de 255. Il peut contenir n'importe quels caractères, sauf la barre oblique « / », parce qu'elle sert à délimiter les répertoires (voir plus loin).

Tout fichier dont le nom commence par un point (« . ») est un fichier caché et ne sera pas immédiatement visible lorsque nous demandons la liste des fichiers d'un répertoire.

Certaines précautions doivent être prises si nous voulons attribuer des noms contenant des caractères spéciaux (tels '?', '*', '&', l'espace, etc) : ils sont admis, comme les autres caractères, mais rendent la manipulation des noms de fichiers à la ligne de commande plus pénible. En général, il est suffisant de mettre le nom entre apostrophes, mais nous déconseillons leur usage.

Il n'y a pas de restriction sur la structure de l'identificateur. Les identificateurs suivant sont valides:


windows
Windows
Notez que contrairement à Windows, l'extension ne détermine pas de manière certaine le type de fichier et elle n'est pas nécessaire, si ce n'est pour aider l'usager à se souvenir du type de contenu du fichier.


3.4.2 Accès à un fichier

Une fois un fichier créé, il existe de manière permanente sur le disque, c'est à dire que tant que l'usager ne demande pas explicitement de l'effacer, il demeure accessible au même endroit sur le disque dur.

Le système de fichiers de UNIX peut être vu comme un arbre : il comporte un point de base, la racine du système. La racine est désignée par la barre oblique seule : « / ». La racine est un répertoire contenant plusieurs sous-répertoires, qui eux-mêmes en contiennent d'autres, etc. La racine est le seul répertoire n'ayant pas de parent. La figure 3.2 illustre la hiérarchie du système de fichiers.

folder_tree
Fig. 3.2 Hiérarchie du système de fichiers


windows
Windows
Contrairement à Windows, la système de fichiers de UNIX n'a qu'une seule base. Windows comprend plusieurs « unités » parallèles (C, D, etc.); sous UNIX tout le système de fichiers fait partie du même arbre


Un chemin d'accès (path) permet de localiser un objet sur le système de fichier. Comme des directives routières, le chemin d'accès indique la séquence de répertoires par laquelle passer pour se rendre d'un répertoire à un autre. On sépare les noms des répertoires successifs par des barres obliques.

Il existe deux manières de nommer un fichier : absolue et relative.


3.4.2.1 Chemin absolu

Quand on donne le chemin d'accès absolu d'un fichier dans l'arborescence, on donne sa position par rapport à la racine. Partant de la racine, on peut suivre le chemin donné et aboutir au fichier. Comme le chemin part de la racine, il commence par une barre oblique « / ».

Par exemple, dans la figure 3.2, le répertoire PROJET est désigné par le chemin absolu /u/semunix/PROJET. D'autres exemples:

/u/semunix/semunix.pdf
/bin/ls
/usr/local

Vous pouvez remarquer que les chemins absolus commencent tous par une barre oblique.


3.4.2.2 Chemin relatif

Il aussi possible de localiser un fichier par rapport à un autre. On décrit alors le chemin non pas à partir de la racine mais à partir d'un autre répertoire.

Il faut parfois remonter dans la hiérarchie (par exemple, dans la figure 3.2, pour se rendre dans Devoir à partir de HTML, il faut remonter d'un niveau puis aller dans PROJET/Devoir). Pour désigner le parent d'un répertoire, on utilise la notation .. :

Le chemin d'accès du répertoire Devoir relatif au répertoire HTML est donc ../PROJET/Devoir. Le répertoire semunix, lui, est simplement désigné par .., puisqu'il est le parent de HTML.

Autres exemples de chemins relatifs (les deux derniers sont équivalents) :

../texte.txt
cours/texte.txt
./cours/texte.txt


3.4.3 Les droits d'accès

UNIX, étant un système multiutilisateurs, permet de définir des droits d'accès sur les composantes du système de fichier (fichier, répertoire, périphérique, ...). Ainsi, il est possible de conserver pour soi certains fichiers personnels et de partager d'autres fichiers à des groupes d'utilisateurs.

Les fichiers et répertoires se trouvant dans votre répertoire principal sont bien à vous. Cependant, le système UNIX est un système qui se dit « ouvert » : il permet de partager les ressources. Cela laisse donc la possibilité à toute personne ayant accès au réseau d'utiliser des fichiers qui se trouvent dans votre compte personnel. Dans une entreprise où plusieurs personnes travaillent sur le même projet, ceci peut s'avérer très pratique. Un peu moins pratique cependant dans le cas d'une université où près d'une centaine d'élèves auront à faire les mêmes travaux. Certains chercheront peut-être à profiter de cette ouverture. C'est pourquoi il existe différents systèmes de protection.

Comme premier exemple d'inspection des permissions d'accès d'un fichier, vous allez inspecter celles de votre répertoire personnel. Tapez la commande suivante:



$ ls -ld ~


(Voir la section 3.5.4 pour plus de détails sur la commande ls)

Vous obtenez alors quelque chose de similaire à ce qui suit :


 drwxr-xr-x   58 semunix  etud         5120 Jul 26 12:19 /u/semunix


La première colonne à gauche, composée de lettres et de tirets, donne les permissions du fichier dont le nom se trouve à droite complètement. Dans l'exemple qui précède, ce fichier est votre répertoire de travail personnel. La colonne de gauche indique donc qui possède quelles droit sur votre répertoire de travail.

Pour décoder les permissions, il faut d'abord décomposer l'information comme ceci :


[d] [rwx] [r-x] [r-x].


Le premier bloc, composé d'une seule lettre (dans ce cas d), indique type du fichier. Les types de fichiers fréquents sont:

-
file Fichier normal.
d
directory Répertoire.
l
link Lien.

Le d indique donc qu'il s'agit d'un répertoire.

Suivent les trois triplets. Chacun est composé des lettres « rwx », toujours dans cet ordre; certaines lettres sont toutefois masquées par un tiret. Dans chaque triplet, chaque lettre indique un type particulier de permission.

r
read Permission de lire.
w
write Permission d'écrire.
x
execute Permission d'exécuter.

Si la lettre est visible, la permission est donnée. Si elle est cachée par un tiret, est n'est pas donnée. Les trois blocs donnent les droits d'accès pour, dans l'ordre, le propriétaire du fichier (owner), les membres du groupe (group) et les autres (others).

Dans l'exemple qui précède, les permissions sont rwxr-xr-x, voyons ce que cela signifie :

  1. Le premier bloc indique les permissions du propriétaire (vous, dans ce cas). Il contient rwx; aucune lettre n'est masquée, ce qui signifie que vous avez tous les droits : lecture, modification, et exécution.
  2. Le second bloc indique les permissions des usagers dans le même groupe (les autres étudiants du bacc, dans ce cas). Il contient r-x; la lettre w est masquée, ce qui signifie que les autres étudiants n'ont pas de droit de modification. Les lettres r et x sont toutefois visibles, donc ils ont tout de même le droit de lecture et d'exécution.
  3. Le troisième bloc indique les permissions des autres (tous les usagers qui ne sont pas au bacc, incluant les « visiteurs », comme ceux qui consultent votre page Web par exemple). Il contient la même chose que le bloc précédent, ce qui signifie que les autres ont les mêmes droits que ceux du groupe, c'est-à-dire le droit de lecture et le droit d'exécution, mais pas celui de modification.

Voyons maintenant le sens de ces permissions. Le sens des termes « droit d'écrire, droit d'exécuter » diffère selon qu'ils s'appliquent à un fichier simple ou à un répertoire.


3.4.3.1 fichier

r
read Permet la lecture du contenu du fichier.
w
write Permet l'écriture, c'est-à-dire la modification, du fichier.
x
execute Permet d'exécuter le fichier.


3.4.3.2 répertoire

r
read Permet de lister le contenu du répertoire.
w
write Permet de créer, d'effacer ou de renommer les fichiers du répertoire.
x
execute Permet d'entrer dans le répertoire.

Le propriétaire d'un fichier peut en changer les permissions avec la commande chmod; voir la section 3.5.10.


next up previous contents index
suivant: 3.5 Les commandes de base monter: 3. Les bases de UNIX précédent: 3.3 Les usagers   Table des matières   Index


Séminaire Unix
2006-01-11