Microsoft utilise les systèmes de fichiers FAT (File Allocation Table) et NTFS (New Technology File System).
FS et droits
Le système FAT est plus ancien que NFTS et subsiste comme formatage par défaut des clés USB car il est adapté aux petits volumes de données.
Cependant, il ne dispose d'aucune sécurité ni vrai contrôle d'accès.
Le système NTFS est très sécurisé (trop ?) et donc complexe à configurer : chaque fichier, chaque dossier peut contenir un ensemble de droits d'accès, variables selon le profil qui y accède et permettre l'héritage ou la diffusion de ses droits à tous les objets contenus.
Cette sophistication en fait sa puissance mais aussi sa complexité de gestion.
Par exemple, si on récupère un disque sécurisé d'un PC, pour accéder totalement aux données il faudra en devenir le propriétaire et porpager la modification à tous les objets qui hérite des droits modifiés.
Cette opération est parfois longue.
Autre exemple : Si un utilsateur possède des droits important sur un dossier, il n'est pas certains que ces droits s'appliquent à tous les objets contenus ni de manière identique pour chaque objet du dossier.
Cependant, le stockage des références permettant de lire les données d'un fichier conservent le même principe que pour FAT.
Cet article concerne surtout FAT. Cependant, NTFS est issu de FAT et en a conservé les grandes lignes hors de la gestion des droits.
Ce qui suit est valable autant pour FAT que pour NTFS.
Noms des fichiers
Le système de fichier est composé de références (étiquettes, noms) qui permettent de pointer vers des objets de trois types : fichiers, répertoires et raccourcis.
Le nom d'un fichier est composé de plusieurs données (en gros) :
- un nom de fichier sur 8 caractères : identifiant composé de 8 caractères [a-zA-Z0-9] et servant à identifier chaque fichier sur le disque, ce nom est souvent un résumé du nom symbolique,
- une extension sur 3 caractères : composée de 3 caractères et permettant d'identifier le logiciel qui permet d'exploiter les données du fichier,
- un nom symbolique pouvant atteindre jusqu'à 256 caractères,
- des données système :
- des options (Lecture seule, caché, système, archive, etc.) et des options de sécurité avancées dans NTFS,
- le type (fichier ou répertoire),
- les dates et heures de création et de modification,
- l'adresse de début des données et la taille du fichier,
Exemple :
- nom symbolique : mon_fichier qui est maPage.html
- nom identifiant et extension : MAP~0001.HTM
- adresse hexadécimale : 123a4d5e
L'explorateur de fichier et l'interface de commande affichent normalement toujours le nom symbolique du fichier et son extension.
Lorsque le nom symbolique est perdu, on retrouve parfois l'identifiant (/ex fichier récupéré : CHK00001.FIL ).
Pour effacer un fichier, le système ne fait que remplacer la première lettre par un '@' (arobase).
Si le nom symbolique contient des espaces, il faut entourer le nom et son chemin par des guillemets doubles (") : "mon fichier.txt", et non mon fichier.txt = deux fichiers distincts.
Liens physique ou symbolique ?
Le système de fichiers permet de créer des "copies" du nom du fichier (1) sous forme de "raccourcis" (3). (Faire click droit et propriétés sur un "raccourcis")
Une raccourcis est en fait un petit fichier .lnk qui contient le chemin absolu d'accès au fichier. Il fait donc référence au nom physique du fichier.
Sous Linux, il est aussi possible de faire des copies de liens physiques (2) et ainsi de multiplier le nombre de noms que porte un fichier.
Ceci a pour conséquences que :
- Lien symbolique (Windows et Linux) : Si on supprime un fichier, les liens sybmoliques (raccourcis) n'ont plus de cible et les données sont perdues.
- problème de cohérence du système de fichier
- Multiples liens physiques (Linux selement) : Si on supprime un fichier, les données persistent tant qu'il reste un lien physique quelque part.
- les données sont préservées si on les a "supprimées" par erreur.
- les données persistent et encombrent le disque si on vouhaitat vraiment les supprimer.
Les deux types de liens sont intéressants, mais ils peuvent aussi présenter des inconvénients.
Dans tous les cas, cela permet de multiplier les accès sans multiplier des données identiques sur le disque.
Les liens physique multiples sont plus difficiles à gérer mais plus efficaces pour accéder aux données (et plus sûr en cas d'effacement involontaire).
Tous les chemins mènent aux répertoires et aux fichiers
Chemins absolu et relatifs
Sous DOS/Windows il existe deux façons d'écrire un chemin pour atteindre un répertoire ou un fichier :
- le chemin absolu : unique, qui part de la racine de l'arborescence (/) qui commence au début du disque et parcours touts les dossiers pour arriver au fichier cherché (comme une URL).
- le chemin relatif : décrit par rapport à la position où l'on est dans l'arborescence ; on utilise des raccourcis spéciaux pour naviguer :
- ./ le répertoire courant
- ../ le répertoire parent de celui où l'on est.
Chemin absolu : Exemples 1
Le fichier toto.txt qui est dans le répertoire toto qui est dans le répertoire user qui, lui-même est dans le répertoire FTP qui est situé sur le disque C: a pour chemin :
C:/FTP/user/toto/toto.txt
Si on est situé dans le répertoire user, le chemin relatif de toto.txt est :
Si on est situé dans le répertoire toto, le chemin relatif de toto.txt est :
En utilisant les noms des répertoires spéciaux :
- ./ : le répertoire courant,
- ../ : le répertoire parent de celui où on est.
Chemin relatif : Exemple :
Soit l'arborescence suivante :
C:/--FTP-+-common/
+-pub-----+-PUBLIC
| +-private
|
+-user----+-toto-+-toto.txt
+-titi
+-tata
Si on est dans le répertoire C:/FTP/user/, on peut utiliser n'importe quel chemin suivant :
C:/FTP/user/toto/toto.txt
toto/toto.txt
./toto/toto.txt
Si on est dans le répertoire FTP/user/titi , le chemin relatif de toto.txt est :
Ici, on remonte d'un "cran" et on redescend vers toto
Si on est dans le répertoire FTP/pub/free , le chemin relatif de toto.txt est :
On remonte deux fois pour aller dans FTP puis on redescend vers toto.txt
Exercice
La commande copy
demande le chemin et le nom du fichier source à copier et le chemin et le nom du fichier cible de la copie. Exemple :
[dos]
> copy <source> <cible>
> copy c:/FTP/user/toto/toto.exe c:/
Le symbole > (supérieur) et les éventuels caractères qui se truvent devant (c:/FTP/bla bla/>) représentent une information contenant le chemin du répertoire actuel.
Cette indication se nomme le prompt.
Travail à faire :
- Indiquer la commande pour copier le fichier toto.txt sans changer son nom depuis le répertoire "origine" vers le répertoire "cible".
Vous écrirez le chemin absolu puis le chemin relatif :
Position |
Copier vers (Cible) |
Commande ? |
C:/ |
Répertoire common |
|
toto |
Free |
|
toto |
Titi |
|
private |
private |
|
- Nous sommes dans le répertoire titi, indiquer la commande pour copier le fichier toto.txt en doc.txt
Cas de plusieurs disques (C, D, E, ...)
Pour Windows (NTFS, FAT), la racine du système de fichier commence au début du disque.
Si nous avons plusieurs disques, chaque disque possède sa propre racine (C:/, D:/, etc.).
Dans ce cas, un chemin relatif n'est valable que pour le disque sur lequel nous sommes.
Pour faire une copie vers un autre disque, il faut utiliser le chemin absolu pour la cible (ou/et la source).
Pour changer d'unité de disque, il convient de taper la lettre du disque suivi de ":". Par exemple : c>d:
permet d'accéder au disque D.
ATTENTION, le changement de disque ne change pas la position du pointeur sur le disque que l'on a quitté.
Exemple
Avec l'arborescence suivante, copier le fichier test.tst vers le répertoire de toto :
C:/--FTP-+-common/
+-pub-----+-PUBLIC # <=position sur C:
| +-private
|
+-user----+-toto-+-toto.txt
+-titi
+-tata
D:/--test.txt # <= fichier à copier depuis la racine de D:
Si on est dans c:/FTP/pub/PUBLIC/, les commandes suivantes donnent un résultat inattendu :
[dos]
C:/FTP/pub/PUBLIC/> d: # passer sur le disque D:
D:/> copy test.txt c: # copier vers le disque C:
On passe sur D: et on copie le fichier de text.txt vers c: (sans slash).
Le résultat est que le fichier est copié dans le répertoire pointé sur C/, c'est à dire c:/FTP/pub/PUBLIC/ !!
Pour le copier vers la bonne destination, il faut indiquer le chemin complet, absolu, de la destination :
[dos]
C:/FTP/pub/PUBLIC/> d: # passer sur le disque D:
D:/> copy test.txt c:/FTP/pub/PUBLIC/ # copier vers C: dans le bon dossier
Exercice
Soit le fichier D:/temp/source.txt qui doit être copier. Le nom du fichier sera changé en target.txt.
Nous sommes sur le disque C.
Avec la même arborescence qu'avant, copier le fichier source.txt dans les cas suivants :
Position |
Cible |
Commande? |
C:/FTP/common/ |
common |
|
C:/FTP/pub/ |
common |
|
On passe sur D:/temp/ en venant de C:/FTP/user/toto/, quelles sont les commandes à faire pour copier le même fichier source vers les cibles suivantes ?
Position |
Cible |
Commande |
D:/temp/ |
common |
|
D:/temp/ |
free |
|