Les attributs étendus des fichiers sous Mac OS X et Linux…

Alors que je suis en train de mettre en place mon nouveau serveur de virtualisation, j'ai décidé de déplacer les images ISO qui me servent principalement pour les machines virtuelles de mon serveur de fichiers vers l'espace de stockage du serveur de virtualisation.

Tout se passe bien sauf pour 4 fichiers, et je ne comprends pas pourquoi. La copie démarre, mais à la fin, le Finder m'insulte en m'indiquant que je ne dispose pas des droits nécessaires pour terminer l'opération, et cela provoque la suppression des fichiers transférés alors même qu'ils étaient totalement transférés.

J'ai déjà rencontré ce genre de soucis par le passé, à cause de droits étendus (les fameux ACLs) de MAC OS X. J'ai déplacé les fichiers récalcitrants de mon serveur source vers mon MacBookPro, pour voir s'il n'y a pas des ACLs pourris. Mais non, pas d'ACL exotiques, si ce n'est la présence d'un @ à la fin des droits Unix classiques lorsque je liste les fichiers :

 


$ ls -la
total 4249280
drwxr-xr-x   7 ctacat  staff        238 May 15 18:41 .
drwx——@ 30 ctacat  staff       1020 May 15 18:29 ..
-rw-r–r–@  1 ctacat  staff       6148 May 15 18:30 .DS_Store
-rwxrwxr–@  1 ctacat  staff  348813312 Jul  3  2008 openfiler-2.3-x86-disc1.iso
-rwxrwxr–@  1 ctacat  staff  361930752 Jul  3  2008 openfiler-2.3-x86_64-disc1.iso
-rw-rwxr–@  1 ctacat  staff  731453440 Apr 29 14:55 ubuntu-10.04-desktop-amd64.iso
-rw-rwxr–@  1 ctacat  staff  733419520 Apr 29 14:56 ubuntu-10.04-desktop-i386.iso
 
Au hasard de mes recherches sur Internet concernant les ACLs sur Mac OS X, je tombe sur un article chez Ars Technica concernant Tiger, mais qui s'avère être l'explication à mon problème. Alors que je me suis focalisé sur un problème de droits d'accès aux fichiers, je (re)découvre qu'il existe sous Mac OS X les Extended Attributes ou xattr, hérités de BSD, qui permettent d'affecter des "propriétés" autres que des droits d'accès à des fichiers.
 
Voici un exemple de ce que ça donne sur mes fichiers récalcitrants depuis le MacBookPro :

$ xattr *

 

openfiler-2.3-x86-disc1.iso: com.apple.metadata:kMDItemWhereFroms
openfiler-2.3-x86_64-disc1.iso: com.apple.metadata:kMDItemWhereFroms
ubuntu-10.04-desktop-amd64.iso: com.apple.metadata:kMDItemWhereFroms
ubuntu-10.04-desktop-i386.iso: com.apple.metadata:kMDItemWhereFroms

 

Ces attributs, s'ils sont compris par Mac OS X, ne semblent pas l'être par le serveur de destination, sous Linux, alors qu'ils sont compris et stocké sur le serveur source, lui aussi sous Linux (c'est de l'OpenFiler). Après vérification, la raison en est simple : le support des Extended Attributes n'est pas automatique dans les filesystems Linux qui le supportent, il faut passer un paramètre approprié lors du montage. Et en effet, il est passé sur le serveur source et pas sur le serveur destination.

N'ayant pas envie ni besoin d'activer les xattr sur mon serveur de virtualisation, je décide donc de supprimer les attributs des fichiers à copier, avec la commande suivante :

$ xattr -d com.apple.metadata:kMDItemWhereFroms *

Une fois ceci fait, le déplacement des fichiers ne pose plus de problème.

A noter que si sous Mac OS X, c'est la commande xattr qui permet de manipuler les Extended Attributes, sous Linux la commande idoine est attr, avec quelques différences dans les paramètres, mais de comportement très similaire.

This entry was posted in Apple, Gentoo Linux, Linux, OpenFiler. Bookmark the permalink.

Laisser un commentaire