La structure des fichiers Macintosh et NTFS - informations fournies par Soft Experience : www.softexperience.com

Windows NT/2000/XP et les fichiers Macintosh

dernière mise à jour: 15 Avril 2008 
Cette page explique comment Windows NT/2000/2003/XP supporte (sic) les fichiers Macintosh (pré OSX). Il s'agit d'une compilation d'informations disparates et parfois peu connues. La seule ambition de ce texte est de démystifier le sujet, tant pour les spécialistes de Windows que pour ceux du Macintosh.
Note : dans ce qui suit, le service standard de NT/2000/2003 permettant le support des Macintosh est appelé SFM (Services For Macintosh). 

Sommaire 

1. La structure des fichiers Macintosh et NTFS

2. Les noms de fichiers Macintosh et l'UNICODE

Références

À lire également

Sur le site de Soft Experience :

Sur d'autres sites, traduits par Soft Experience :

Logiciel Kalimages : cataloguez vos photos dans une base de données images avec éditeur IPTC

1. La structure des fichiers Macintosh et NTFS

Les forks des fichiers Macintosh

Les fichiers Macintosh (pré OSX) sont constitués de deux composantes appelées forks :

Par ailleurs, le système du Macintosh maintient des informations concernant le fichier dans le catalogue du disque dur; ces informations permettent de savoir comment lancer l'application associée au fichier, quelle taille mémoire allouer à un programme, et quelle est la signature Type/Creator du fichier.
Note : le couple Type/Creator (2 fois 4 caractères) est une signature caractéristique du fichier un peu équivalente au suffixe MS/DOS de trois caractères; il commande au Finder du Macintosh l'application associée à un fichier. Pour en savoir plus, vous pouvez consulter l'excellente page de Pierre Duhem sur les Signatures Macintosh .

Une application Macintosh ayant perdu son resource fork devient un fichier quelconque, non exécutable et non "cliquable".

On remarquera que l'un ou l'autre de ces forks peut être vide ou presque. Ainsi, les fichiers non exécutables possèdent généralement un resource fork très petit ou même inexistant, tandis que les anciennes applications 68K n'ont pas toujours de data fork.

Les streams NTFS

NTFS (New Technology File System) est le système de fichiers natif de Windows NT/2000/2003/XP.

En NTFS, un fichier consiste en plusieurs data streams qui sont un peu la généralisation du concept de fork pour les fichiers Macintosh. Un stream particulier contient les informations de sécurité (droits d'accès, etc.) et un autre stream appelé standard contient les données habituelles, celles qui sont normalement accessibles par les applications. Quand on examine avec l'Explorateur de Windows un fichier "normal" nommé MonFichier, c'est le stream appelé en interne MonFichier::$DATA qui est affiché. Mais il peut exister aussi d'autres streams (alternate streams) liés au stream standard et contenant des métadonnées associées au fichier "normal". Ils sont invisibles depuis l'Explorateur de Windows ainsi que depuis la quasi-totalité des applications Windows. Les alternate streams peuvent être considérés comme des sous-fichiers du stream standard et sont introduits par le caractère deux-points, qui, pour cette raison, est un caractère interdit dans les noms de fichiers Windows ; il peut ainsi exister un stream MonFichier:Secret1 (ou plus précisément MonFichier:Secret 1:$DATA ), un autre stream appelé MonFichier:Secret2, etc., tous liés au fichier "normal" MonFichier.

Un dossier NTFS peut également posséder des alternate streams.

Les streams NTFS et la sécurité

Ce paragraphe développe un article de Gé@NT ! n°5 (septembre 1998).

Il est très facile de créer d'autres streams pour un fichier quelconque. Créons par exemple un stream nommé Secret1.txt :

Examinons maintenant le problème :
Si vous tapez dir MonFichier.txt, le système vous affichera une taille de 4 octets. Si vous tapez type MonFichier.txt, il affichera effectivement "xxxx". Par contre, si vous tapez notepad MonFichier.txt:Secret1.txt ou more <MonFichier.txt:Secret1.txt, il retrouvera et vous affichera "ceci est secret".

Il est également possible de créer un alternate stream à l'aide de la commande echo . La commande suivante, par exemple, crée le même alternate steam que précédemment associé au fichier vide MonFichier.txt :
echo ceci est secret >MonFichier.txt:Secret1.txt

Enfin, la commande echo ceci est secret >:Secret crée un alternate stream associé au dossier en cours (curieusement - si l'on peut dire! - la commande more se plante lorsque l'on tente d'afficher le contenu d'un alternate stream associé à un dossier).

Qu'est-ce que cela veut dire ? Tout simplement que vous venez de créer un stream complètement invisible, géré par NTFS, mais dont les applications courantes n'ont aucune trace ! Analysons un peu plus le problème. Vous avez créé un fichier normal, sur lequel vous pouvez mettre autant de streams que vous le souhaitez (vous pouvez répétez l'opération avec comme noms de streams Secret2, Secret3, etc.) en les gardant complètement invisibles. Vous pouvez y enregistrer des informations personnelles ou privées, mais aussi des virus, ou tout simplement court-circuiter tous les logiciels que votre administrateur NT a mis en place. Vous pouvez donc posséder un fichier "officiel" possédant un seul octet tandis que les alternate streams de ce fichier occupent plusieurs centaines de Mo.

Poursuivons l'expérience en renommant le fichier "normal": rename MonFichier.txt SonFichier.txt
La commande more <MonFichier.txt:Secret1.txt affiche alors 'Fichier intouvable', tandis que la commande more <SonFichier.txt:Secret1.txt affiche bien "ceci est secret".

Effaçons enfin le fichier "normal" : delete SonFichier.txt . Cette fois la commande more <SonFichier.txt:Secret1.txt affiche 'Fichier intouvable'.

Les alternate streams sont donc complètement liés au stream standard qu'est un fichier "normal"; ils lui sont subordonnés lors des opérations de renommage, déplacement, effacement. Il en est de même pour les alternate streams associés à un dossier.

Microsoft ne fournit aucun outil permettant de visualiser les alternate streams ou de gérer leur occupation sur un volume NTFS. Pire, d'après les tests du NT Users Group :

De l'avis de nombre d'experts, le support des streams dans NTFS est une belle fonctionnalité - qui manque par exemple à Unix (lire à ce sujet la discussion NTFS-like streams en Août 2000 sur l'intérêt d'introduire le support des streams dans le noyau de Linux). Elle est toutefois fort peu utilisée par les applications. En dehors du support des fichiers Macintosh, comme nous le verrons, les streams sont utilisés parfois dans des applications de cryptage de données (cf. par exemple Jetico BestCrypt ). Windows 2000 utilise également la technique des streams pour stocker les propriétés (Titre, Sujet, Commentaire, Auteur, etc.) que l'on peut associer à tout fichier, un peu à la manière des propriétés des documents Office (voir notre page Métadonnées: une initiation ). Certaines applications comme l'explorateur de Windows 2000 utilisent aussi les streams pour stocker des vignettes (thumbnails) de fichiers images; les vignettes des images sont alors affichées très rapidement.
Mais les streams constituent également une inquiétante possibilité de cheval de Troie et ouvrent de nombreuses possibilités de virus. En septembre 2000, le premier véritable virus utilisant les streams NTFS et appelé W2K.Stream est apparu. Les streams NTFS sont également à l'origine de quelques problèmes de sécurité; cf. ASP vulnerability with Alternate Data Streams et File Access Issue with Windows NT Internet Information Server .

Accéder aux streams NTFS

Il existe deux fonctions de l'API Windows NT permettant de déterminer les streams d'un fichier :

Cf. http://www.mvps.org/win32/ntfs/streams.html

L'utilisation de ces APIs dépasse le cadre de ce papier, mais vous pouvez télécharger les programmes suivants qui permettent de lister les alternate streams; presque tous sont des outils en mode console :

Les streams NTFS et les forks Macintosh

Lorsque l'on exécute l'un des utilitaires mentionnés ci-dessus sur un dossier NTFS permettant de stocker des fichiers Macintosh - c'est-à-dire sur un sous-dossier d'un dossier défini comme volume Macintosh à l'aide de SFM -, les streams suivants sont détectés pour chaque dossier ou fichier Macintosh :

Un fichier Quark XPress Macintosh nommé Annonce et stocké sur un dossier NTFS géré par SFM possède par exemple :

Une application exécutable comme SimpleText possède lorsqu'elle est stockée sur un dossier NTFS :

Ces noms de streams sont générés et utilisés par le serveur Macintosh standard de NT (SFM). Lorsque l'on utilise d'autres serveurs Macintosh sur NT, d'autres streams peuvent être utilisés. MacServerIP (Cyan Software) maintient par exemple un stream nommé AFP_FileInfo (toujours 80 octets) pour chaque dossier et fichier.

ATTENTION : on ne doit jamais supprimer les streams non standards sur des volumes supportant des fichiers Macintosh puisque les streams permettent de stocker les resource forks et les informations Finder des fichiers. L'effet serait identique au déplacement d'un fichier Macintosh depuis un volume NTFS vers un volume FAT (qui ne supporte pas les streams) suivi du rapatriement du fichier en question vers le volume NTFS d'origine : on perd le resource fork du fichier qui devient totalement inutilisable. Vous pouvez par contre déplacer sans problèmes un fichier Macintosh d'un dossier NTFS vers un autre avec l'Explorateur de Windows NT (seulement en NT/SP4 ou supérieur; cela ne marche pas en SP3 et encore moins avec l'Explorateur de Win95/98) ; ce programme utilise des API qui permettent de copier ou déplacer l'ensemble des alternate streams associés au fichier : même si le dossier d'accueil n'est pas reconnu par les Macintosh, on ne perd pas le resource fork du fichier Macintosh car les streams sont une notion NTFS indépendante de SFM. Si SFM n'existe pas sur NT Workstation ou Windows 2000 Pro, c'est une limitation purement commerciale de Microsoft. MacServerIP et ExtremeZ-IP qui sont plus performants que SFM existent sur NT Workstation/Windows 2000 ou XP Pro. Ainsi,  il peut être parfois intéressant d'utiliser une machine non serveur (au sens de Microsoft) pour réaliser à bon compte des sauvegardes de fichiers Macintosh stockés sur un serveur (cf. notre programme Idem ).

Comment afficher le Type et le Creator des fichiers Macintosh depuis Windows NT/2000/XP ?

- Avec l'Explorateur

- Avec le programme MacExplorer

Soft Experience propose MacExplorer , un programme gratuit permettant l'analyse des fichiers Macintosh stockés sur un serveur Windows NT/2000.
Voici ses principales caractéristiques :

Les streams associés aux volumes SFM

Ce paragraphe s'applique uniquement aux volumes Macintosh définis par le service standard SFM.

Lorsque l'on exécute un utilitaire tel que LADS sur un dossier NT défini comme la racine d'un volume Macintosh, les streams suivants sont détectés:

Tous ces streams sont créés quand le volume Macintosh est défini. AFP_DeskTop et AFP_IdIndex sont  ouverts lorsque le volume est initialisé et sont effacés quand le volume est effacé. AFP_AfpInfo n'est pas effacé.

SFM effectue l'initialisation des volumes Macintosh dans l'ordre de leur création. Un volume n'est pas disponible, c'est à dire visible depuis les Macintosh, avant qu'il ne soit complètement initialisé. Donc, si un petit volume a été créé après un grand volume, le petit volume n'est pas disponible avant le grand.
L'indexation du volume est une étape très importante de l'initialisation. Elle consiste à examiner l'intégralité de l'arborescence et à créer une image du volume en mémoire virtuelle. Le stream AFP_IdIndex contient cet index; il est mis à jour au démarrage et à l'arrêt de SFM. Après l'étape d'indexation initiale, ce stream n'a pas besoin d'être recréé: il est simplement lu au démarrage de SFM et son image est mise à jour avec les changements qui sont intervenus depuis l'arrêt précédent de SFM. Durant l'indexation d'un volume, l'utilisation de la mémoire non paginée de NT augmente considérablement. Mais ce phénomène est temporaire et la mémoire non paginée est libérée à la fin de l'indexation. L'utilisation de la mémoire non paginée au moment de l'indexation dépend du nombre de répertoires dans l'arborescence, mais pas du nombre de fichiers.
L'utilisation de la mémoire virtuelle est également affectée par SFM. On estime grossièrement qu'un ensemble de 10000 fichiers/répertoires utilise 2 Mo de mémoire vive. Il peut donc être utile d'accroître la mémoire virtuelle de NT (Panneau de configuration/Système/Performances) pour prévenir les dégradations de performances avec les volumes qui contiennent plus de 10000 fichiers ou répertoires.

Note : les articles suivants proposent d'autres optimisations. Il s'agit de manipulations de la base de registre NT (à utiliser donc avec les précautions d'usage):

Si le stream AFP_IdIndex ne peut être mis à jour à l'arrêt de SFM ou s'il est détérioré, un nouveau stream est créé au démarrage suivant. Il peut être utile de mettre à profit cette propriété quand les performances se dégradent ou que des phénomènes inhabituels se produisent (en particulier: icônes de fichiers en double ou plantages lors de transferts de fichiers). Les mécanismes de mise à jour du stream AFP_IdIndex sont en effet délicats (et probablement non exempts de bugs). Il est donc parfois nécessaire de forcer la réindexation des volumes Macintosh.
L'article Troubleshooting MacVolume Creation Errors décrit les différentes méthodes utilisables. La plus simple à mettre en oeuvre est la méthode 4:

Observations:
- Les fichiers Macintosh restent intacts car leurs spécificités sont stockés dans des alternate streams.
- Les fichiers Macintosh du volume qui étaient présents dans la corbeille sont perdus car le répertoire caché Network Trash Folder est effacé quand on supprime un partage Macintosh.
- Le stream AFP_IdIndex est supprimé quand on supprime un partage Macintosh. Il est recréé au démarrage suivant de SFM. En conséquence, l'indexation ex nihilo d'un volume Macintosh peut demander beaucoup de temps et consommer de la mémoire non paginée s'il y a beaucoup de fichiers dans le volume ainsi redéfini.
- N'oubliez pas non plus de défragmenter régulièrement les volumes NTFS. Bien que les utilitaires de défragmentation ne tiennent pas compte des alternate streams, ceux-ci ne contiennent pas en général beaucoup de données et la pénalisation induite par leur présence reste faible.
- Vérifiez auprès de votre fournisseur de système de backup que celui-ci copie bien les alternate streams (donc les fichiers Macintosh) et travaille en Unicode (cf. ci-dessous).


2. Les noms de fichiers Macintosh et l'UNICODE

Les noms de fichiers Macintosh et les noms de fichiers NTFS

Tout utilisateur d'un serveur de fichiers Macintosh sur NT/2000 a un jour été confronté à un problème de ce type : un client Macintosh a créé un document nommé par exemple Annonce 20/08 qui est vu sous le nom Annonce 20|08 par les clients NT/2000 et sous le nom Annonce 20?08 par les clients 95/98/Me. Ce fichier est inaccessible depuis l'application correspondante sous Windows (toutes versions). De plus, l'Explorateur de 95/98/Me ne peut accéder à ce fichier alors que l'Explorateur de NT/2000/XP peut le déplacer, le renommer ou l'effacer.

Les noms de fichiers ou de dossiers Macintosh doivent en effet respecter les règles suivantes :

Les noms de fichiers NTFS doivent respecter les règles suivantes :

NTFS utilise le codage UNICODE pour représenter en interne les fichiers Macintosh dont le nom comporte des caractères interdits pour Windows tout en autorisant la manipulation de ces fichiers par les applications NT (lorsqu'elle sont correctement écrites !).

L'UNICODE

Que ce soit pour un client Windows ou un client Macintosh, NTFS stocke toujours les noms de fichiers ou de dossiers au format UNICODE .

L'UNICODE est une technique de représentation des chaînes de caractères. Chaque caractère est représenté en UNICODE sous la forme de deux octets au lieu d'un seul comme habituellement en ASCII étendu. Les caractères ASCII courants sont suivis d'un octet nul X'00'. Le caractère A (X'41' en ASCII) est ainsi représenté par X'4100' en UNICODE.

Quand un client Macintosh crée un fichier sur un volume SFM, ce nom doit être converti du code ANSI utilisé par le Macintosh vers l'UNICODE utilisé par NTFS. Pour transcoder en UNICODE les caractères autorisés dans un nom de fichier Macintosh mais interdits dans un nom de fichier Windows, SFM utilise la Private Use Area du standard UNICODE selon le tableau suivant :

Macintosh ANSI
UNICODE
01-1F
01F0-1FF0
"
20F0
*
21F0
/
22F0
<
23F0
>
24F0
?
25F0
\
26F0
|
27F0
Espace à la fin du nom du fichier
28F0
Point à la fin du nom du fichier
29F0
Logo Apple
2AF0

Quand un client Macintosh veut accéder à un fichier stocké par un Macintosh sur NTFS, SFM effectue l'opération de conversion inverse depuis le nom UNICODE ; le client en question voit donc son fichier sous son nom original et avec les caractères spécifiques au Macintosh.

Quand un client Macintosh veut accéder à un fichier stocké par un client Windows sur NTFS, SFM effectue un transcodage des caractères invalides vers des caractères équivalents de telle façon que le client en question voit le fichier avec des caractères corrects pour un Macintosh.

Les applications Windows écrites selon le standard UNICODE voient les fichiers Macintosh avec leur propres caractères définis dans leur propre Private Use Area. Ces applications peuvent donc accéder à tous les fichiers ou dossiers Macintosh sur NTFS. C'est le cas par exemple de l'Explorateur de NT. Par contre, les applications Windows qui sont écrites selon le standard ANSI utilisent une autre correspondance. Les caractères UNICODE de la Private Use Area sont convertis vers le caractère ANSI par défaut : le point d'interrogation (?). Or comme le point d'interrogation est un caractère joker pour les plate-forme Windows, les applications écrites selon le standard ANSI ne peuvent pas accéder à ces fichiers. C'est le cas de toutes les application s'exécutant sur Windows 95/98/Me puisque ce système ne supporte pas l'UNICODE. Les éditeurs de logiciels écrivent peu d'applications véritablement UNICODE ou d'applications mixtes: UNICODE pour NT/2000/XP et ANSI pour 95/98/Me. Ils écrivent "au plus simple", en ANSI, de façon à ce que la même application tourne indifféremment sur NT/2000/XP et 95/98/Me ; en conséquence ces applications ne peuvent accéder aux fichiers Macintosh dont les noms comportent les caractères évoqués.

Enfin, si un nom de fichier Windows comporte plus de 31 caractères, SFM présente le fichier en question avec son "nom court" (8+3) aux clients Macintosh.

Soft Experience propose MacNames , une application NT/2000/XP permettant de renommer de façon transparente les fichiers Macintosh stockés sur un volume NTFS.
Voici ses principales caractéristiques:

Les fichiers cachés ICON_

Lorsque son Explorateur lui permet d'afficher les fichiers cachés, un client Windows 95/98/Me voit parfois des fichiers nommés ICON_. Ces fichiers sont de taille nulle et il ne peut pas les renommer, les déplacer ou les effacer. Un Explorateur NT/2000/XP voit ces fichiers cachés sous le nom ICON| et il peut les manipuler.

Ces fichiers sont créés par SFM pour maintenir l'icône d'un dossier lorsqu'elle a été modifiée par un Macintosh. Le code de l'icône est stocké dans l'alternate stream AFP_Resource de ce fichier (et son stream AFP_AfpInfo contient un Type=icon, Creator=MACS). Comme les alternate streams ne peuvent exister sans main streams, SFM crée un  fichier caché ICON_ dont le dernier caractère du nom est un caractère UNICODE de la Private Use Area de NT (X'0DF0'). Ce caractère n'est pas converti vers le code ANSI Windows (ni vers le code ANSI Macintosh d'ailleurs) et ces fichiers ne sont donc pas manipulables par un client 95/98/Me ou par un client Macintosh.


Références Apple : Inside Macintosh : Files
Microsoft Knowledge Base, Articles: Q105763 , Q106663 , Q117258 , Q147438
Services for Macintosh - File Services for Macintosh http://www.microsoft.com-msj-defaulttop.asp-page=-msj-1198-ntfs-ntfstop.htm
http://msdn.microsoft.com/msdn-online/start/features/ntfs5.asp
FAQ : NTFS Services for Macintosh
Windows-MacOS Cooperation List FAQ par Darryl Lee
La liste Mac-NT par Dan Schwartz
Frank Heyne : http://www.heysoft.de/nt/ntfs-ads.htm
March Information Systems : http://europe.iss.net/streams/
Alert: Virus Scanner inadequacies with NTFS
NTFS file structure for Mac Volumes
Detecting Alternate Data Streams par David LeBlanc (30 novembre 2000)
I have missing space on my NTFS partitions (Alternate Data Streams) par John Savill (9 Janvier 2000)
Windows, NTFS and Alternate Data Streams, by Damon Martin (9 mai 2001)

Le site MacWindows de John Rizzo est une mine de renseignements
Les Signatures Macintosh par Pierre Duhem


Présentation de MacInfoTip (gratuit) Présentation de MacExplorer (gratuit) Présentation de MacNames
Présentation du logiciel de mirroring et sauvegarde Idem

  ecrire Vous pouvez nous joindre ici

Nous vous invitons également à essayez les autres utilitaires de Soft Experience qui facilitent l'intégration des plate formes Windows et Macintosh

MacNames : facilite l'échange de données entre Windows et Macintosh et l'intégration des 2 plate formes connectées à un même serveur Windows NT, Windows 2000 ou Windows XP. Il permet de renommer automatiquement les fichiers Macintosh stockés sur un serveur Windows NT/2000/XP en supprimant les caractères invalides et en ajoutant les extensions aux fichiers de façon à convertir les noms de Mac à PC.
Idem automatise la synchronisation de fichiers et la réplication de répertoires . Il sauvegarde les données sensibles et évolutives en les dupliquant d’un support informatique vers un autre. Facilement paramétrable pour un fonctionnement en mode application ou service Windows il peut être utilisé pour synchroniser des volumes Mac sur Windows NT/2000/XP.
Delenda efface quotidiennement le contenu d'une liste de dossiers ou les transfère vers des dossiers archives, en local ou sur un serveur en fonction de la date de création, modification ou de dernier accès. Très utile dans le pré-presse ou de nombreux textes deviennent rapidement obsolètes.
Catalogue explore les documents MS Office, StarOffice, OpenOffice.org , affiche ou met à jour leurs propriétés (standard ou personnalisées), crée automatiquement des catalogues HTML et exporte les méta données au format XML . Les commentaires de fichiers Macintosh stockés sur des serveurs Windows sont également extraits : http://www.metadataminer.com
Rarissimo
en complément de WinRar fabrique des lots des fichiers compactés avec les fichiers Macintosh et leurs composants pour envoi vers ftp ou mail : l'avantage c'est que vous récupérez à la réception tous les composants liés à un fichier Mac quelque soit l'outil ftp utilisé qu'il soit Windows ou Mac. WinTopMost inactive le bouton fermer des fenêtres d'application Windows sélectionnées pour garantir qu'elles sont fermées via les options du menu

Voyez aussi les solutions logicielles pour le maniemment des métadonnées de photos : Kalimages et GéoIPTC pour mieux cataloguer vos images et photos.

  Faites connaître ce site à un ami ou partenaire en lui recommandant ce lien !

www.softexperience.com
Librairie softexperience
Librairie Photographie
  www.metadataminer.com Freeware :
  Notre Programme d'Affiliation Et des fonds d'écran fleuris Album par Kalimages MacInfoTip,
MacExplorer,
MacVolumes,
TC, SDP