Contournement des autorisations par défaut lors du montage de volumes HFS + sous Linux

8

J'ai un macbook pro à double démarrage avec Snow Leopard et Kubuntu 11.10, et je veux lire (ne me soucie pas d'écrire) mon répertoire personnel Mac personnel lorsque j'utilise Kubuntu.

Je peux le monter sans aucun problème, mais mon utilisateur sur Kubuntu ne peut pas voir les fichiers sur le HFS + appartenant à l'utilisateur mac, en raison de différents uid (502 sur Mac, 1000 sur Kubuntu).

En regardant les documents du noyau sur HFS +, j'ai lu que:

When mounting an HFSPlus filesystem, the following options are accepted:
[CUT]
    uid=n, gid=n
        Specifies the user/group that owns all files on the filesystem
        that have uninitialized permissions structures.
        Default:  user/group id of the mounting process.

J'ai donc essayé d'utiliser ces options:

$ sudo mount -t hfsplus -o uid=1000,gid=1000 /dev/sda2 /mnt/Mac

Mais ils semblent ne rien faire: je vois toujours les mêmes autorisations quand je regarde autour de moi en utilisant ls -l. Il me manque peut-être quelque chose, un indice?

Je sais que je peux changer mon identifiant utilisateur sur Ubuntu pour le faire correspondre avec Mac Os X, mais je préférerais l'éviter si possible.

gerlos
la source

Réponses:

9

bindfsEst la réponse. Il prendra un système de fichiers déjà monté et fournira une vue de celui-ci avec l'uid que vous souhaitez:

sudo apt-get install bindfs
mkdir ~/myUIDdiskFoo
sudo bindfs -u $(id -u) -g $(id -g) /media/diskFoo ~/myUIDdiskFoo

Éditer:

De plus, en lisant le document, j'ai réalisé que l' mapoption (1.10 et ultérieure) pourrait mieux convenir:

sudo bindfs --map=502/1000 /media/diskFoo ~/myUIDdiskFoo
Catskul
la source
Solution très cool. Il résout le problème sans changer les comportements par défaut des OS et rend possible beaucoup plus d'options. Faites juste attention si le système est partagé avec d'autres utilisateurs, cela peut exposer des fichiers privés à un public inattendu.
gerlos
1
Ouais. J'ai été surpris que l'utilitaire de montage du système n'offre pas cette capacité. Vous pouvez également utiliser la mapfonctionnalité de bindfs pour mapper simplement l'utilisateur 502 à 1000, ce qui pourrait être plus sûr et plus de ce que vous aviez prévu.
Catskul
Comme je n'ai pas la réputation de commenter, je vais juste noter qu'il y a une petite erreur dans la réponse de Catskul, un = manquant, devrait être: sudo bindfs --map = 502/1000 / media / diskFoo ~ / myUIDdiskFoo
J. Simon van der Walt
1

Au final, j'ai créé un utilisateur linux avec le même UID que mon utilisateur mac os x, mais il ne peut pas parcourir tous les répertoires de ma maison sur mac hfs + volume car beaucoup de fichiers appartenaient à l'utilisateur mac "inconnu", UID 99 (voir http://googlemac.blogspot.com/2007/03/user-99-unknown.html ).

Il semble qu'ils l'aient fait pour vous permettre de monter et de lire votre volume lorsque vous le connectez à un autre ordinateur. Lorsqu'un utilisateur régulier regarde ces fichiers appartenant à l'UID 99, il les voit comme s'il en était le propriétaire. Assez étrange. Seul root les voit tels qu'ils sont.

J'ai donc redémarré dans Mac Os X, connecté avec un autre utilisateur avec des privilèges administratifs et utilisé chown -R 502: 20 / Users / gerlos / * pour changer le propriétaire de chaque fichier dans ma maison. Maintenant, je peux tout lire sans aucun problème.

Remarques:

  • L'outil kubuntu gui par défaut pour créer de nouveaux utilisateurs sur Kubuntu 11.10 ne peut pas créer d'utilisateurs avec un UID inférieur à 1000. Utilisez plutôt adduser sur le terminal.
  • vous pouvez connaître votre UID utilisateur en utilisant la commande "id" sur le terminal.
  • sur mac os x, vous devez être root pour voir le vrai propriétaire des fichiers. Attendez-vous donc à des résultats différents si vous tapez "ls -n / Users / gerlos" et "sudo ls -n / Users / gerlos".
gerlos
la source
Cette différence dans OSX entre le "vrai" utilisateur Unix et l'utilisateur reconnu par le Finder m'a donné beaucoup de maux de tête ... cela peut même faire en sorte que certaines applications sur OSX se comportent étrangement (par exemple. Dropbox ne synchronisera pas vos fichiers). Pour éviter tout problème, connectez-vous à votre système OSX, ouvrez un terminal et assurez-vous que votre utilisateur Unix possède tout ce que votre utilisateur OS X possède déjà. Peut-être que je ne comprends pas quelque chose, mais d'après mon expérience, l'utilisation de l'interface graphique n'est pas suffisante.
gerlos
1

En fait, je cherche à faire quelque chose de similaire lorsque je suis tombé sur cette question. Est-ce que je comprends, en regardant votre premier message, que l'option de montage demandée demande quel utilisateur doit être utilisé à la place de la valeur par défaut de votre système Linux (c'est-à-dire uid 1000). Donc, à la place, vous devriez utiliser 502, qui est le propriétaire attendu du système de fichiers que vous essayez de monter.

J'ai testé cela dans ma propre situation, et cela a très bien fonctionné, avec uid 99 pour un système de fichiers à partager entre mes systèmes. Avec cela, je n'aurai pas besoin de changer les uids. Merci donc pour le partage. Cela peut ne plus vous être utile, mais peut aider quelqu'un d'autre. À votre santé

user245987
la source
1
Droite. La meilleure solution consiste à laisser seuls les UID et les autorisations, à monter votre système de fichiers HFS + comme vous le faites normalement, puis à monter votre maison sous le système de fichiers HFS + à l'aide de bindfs, de sorte que tout semble appartenir à votre utilisateur Linux. De cette façon, vous n'aurez jamais besoin d'utiliser des UID personnalisés, ni de modifier les autorisations dans le système de fichiers HFS +, afin de conserver le comportement par défaut dans les deux systèmes. Étant donné que vous pouvez remonter avec bindfs à la maison de chaque utilisateur, vous pouvez conserver les fichiers privés même dans les systèmes partagés, tout en les gardant accessibles aux utilisateurs.
gerlos