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
$ xattr *
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.