10

I have a dual booting macbook pro with Snow Leopard and Kubuntu 11.10, and want to read (don't care about write) my home Mac home directory when I'm running Kubuntu.

I can mount it without any problems, but my user on Kubuntu on can't see the files on the HFS+ owned by the mac user, because of different uid (502 on Mac, 1000 on Kubuntu).

Looking at kernel docs about HFS+ I read that:

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.

So I tried using these options:

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

But they seem doing nothing: I still see the same permissions when I look around using ls -l. I may be missing something, any clue?

I know that I can change my user id on Ubuntu to match it with Mac Os X, but I'd prefer avoiding it if possible.

gerlos
  • 632

3 Answers3

16

bindfs is the answer. It will take an already mounted file system and provide a view of it with whichever uid you'd like:

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

Edit:

Also, reading the doc I realized that the map option (1.10 and later) might fit better:

sudo bindfs --map=502/1000 /media/diskFoo ~/myUIDdiskFoo
Catskul
  • 1,181
1

In the end, I created a linux user with the same UID of my mac os x user, but it can't browse every directory in my home on mac hfs+ volume because a lot of files were owned by mac user "unknown", UID 99 (see http://googlemac.blogspot.com/2007/03/user-99-unknown.html).

It seems that they did so to let you mount and read your volume when you connect it to a different computer. When a regular user look at those files owned by UID 99, he sees them as he is their owner. Quite strange. Only root sees them as they are.

So I rebooted in Mac Os X, logged in with a different user with administrative privileges and used chown -R 502:20 /Users/gerlos/* to change the owner of every file in my home. Now I can read everything without any problem.

Remarks:

  • default kubuntu gui tool to create new users on Kubuntu 11.10 can't create users with UID less than 1000. Use adduser on the terminal instead.
  • you can know your user UID using the "id" command on the terminal.
  • on mac os x, you need to be root to see the real owner of the files. So expect different results if you type "ls -n /Users/gerlos" and "sudo ls -n /Users/gerlos".
soandos
  • 24,600
  • 29
  • 105
  • 136
gerlos
  • 632
1

Actually I'm looking to do something similar when I've come across this question. Is my understanding, looking from your first post, that the mount option requested is asking what user uid should be used instead of the default of your linux system( ie uid 1000). So instead you should be using 502 which is the expect owner of the file system you're trying to mount.

I've tested this in my own situation, and it worked great, with uid 99 for a filesystem to shared between my systems. With this I won't need to go around changing uids. So thanks for sharing. This may not be of much for you anymore but may help someone else. Cheers