How to mount HFS+ drive and ignore permissions
Solution 1
I wasn't able to figure out how to ignore the permissions, but I ended up changing the UID on my Ubuntu account to match my OSX account:
sudo useradd -d /home/tempuser -m -s /bin/bash -G admin tempuser
sudo passwd tempuser
Enter new password. Log out, log in as "other" with username "tempuser" and the password you chose earlier. Open a terminal and type:
sudo usermod --uid 501 yourusername
sudo chown -R 501:yourusername /home/yourusername
*change "yourusername" to your non-temporary user name and 501 to the UID of your Mac account (first Mac account starts at 501, but subsequent users will have different UIDs).
Log out of tempuser and log back into your normal account (this is important; don't just switch users--bad things happen). Open a terminal window and type:
sudo userdel -r tempuser
For more details, visit this page.
Caveats
- Only one linux user can gain access. This setup will not allow multiple linux users to access multiple user directories on the HFS+ drive. This is because Apple locks down user directories (and media directories like Music) to 700 (
rwx------
). - Once you change your UID the login manager will stop listing that user. You have to change the
UID_MIN
option in/etc/login.def
from1000
to500
. - Finally because the user UID has changed, access to the drive becomes a permissions confusion. You will have to note the exact location of your user's home folder to view it. Tab completions and browsing through the file manager will become problematic to folders outside the original Apple user's home folder without
sudo
.
Solution 2
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
Solution 3
The documentation for the linux kernel implementation of the HFS+ filesystem lists a uid
mount option that allows you to "own" all files (and maybe some other options that might be useful too).
Solution 4
I know this is old, but there is another way around it that seems to work just fine for me. Since all of the files were owned by a "root" user, all I did was issue su root
from the terminal and ls -lah /media/Macintosh HD
from there. By using root, I was able to bypass the permission denied error.
Solution 5
I was able to get access to files from an old Macbook hard drive by running the file manager with elevated privileges.
gksudo thunar
Then copy files as needed.
Related videos on Youtube
Comments
-
Joseph over 1 year
I installed Ubuntu and Windows on my MacBook and Ubuntu is my primary OS; however, all of my media stays on my OSX partition. I want to be able to access it (at least my OSX user's home folder) from Ubuntu without having to launch a media player (or anything else) as root. Also, because I occasionally want to fire up my machine in OSX, I don't want to change anything that I would need to change back frequently (I read a lot about changing UID--I don't exactly understand what this entails, but I wouldn't want to have to change my UID back and forth depending on which OS I'm using. Similarly, I don't want to change file system permissions back and forth).
Also, I saw something about a "noowner" option, but that doesn't seem to do what I want it to.
So I guess I'd like to be able to do something like this:
sudo mount -t hfsplus -o noowner /dev/sda2/ /media/Mac
And then be able to access all of my media (at least everything in my OSX user's Home folder) without dropping in as root. (for clarity: the above command line entry doesn't do what I want it to do, but I want to be able to do something similar).
Or would it be better to change my UID? And if so, how?
-
Admin about 10 yearsCan you take a look at my answer. I believe I've answered your question more correctly than the marked answer.
-
Admin about 10 years@Catskul No I can't. This question is over 2 years old--in that time, I've sold my MacBook and reproducing this issue for the purpose of validating your answer is prohibitively difficult.
-
-
Joseph about 12 yearsI've been trying to do that, but I don't know what UID I should be using. I've read it's something like 501 for OSX, but the account isn't the original OSX user. How can I find out this information?
-
mivk over 11 years@weberc2:
ls -l /media/YourHFSdisk/
will show you the uid and gid of the current files/folders. The HFS+ disks I come across seem to be mostly owned by uid 99 and gid 99. However, I tried various combinations uid/gid/umask settings in the mount command, and it didn't seem to change anything. -
frhd almost 10 yearsThe load on cpu and memory is quite substantial, though. If that's a concern, I would recommend @weberc2's solution. Otherwise great answer.
-
Colin over 9 yearsThis did not work for me. From documentation: "uid/gid\nSpecifies the user/group that owns all files on the filesystem that have uninitialized permissions structures." Unfortunately, all the files on my filesystem are still owned by 501 (ie they have initialized permissions structures (?))
-
krumpelstiltskin about 9 yearsbindfs has been flaky for me. i used the response for this post askubuntu.com/questions/315078/… instead
-
krumpelstiltskin about 9 yearsthe usermod approach worked for me. just make sure to remove /media/USERNAME if you want to use USB drives. askubuntu.com/questions/583375/…
-
SYK almost 9 yearssimple and devious
-
fkraiem over 8 yearsFor your caveat 1, 700 is indeed the default for user directories in OS X, but there's no problem in changing it if it doesn't suit you, for example to 755.
-
Hatoru Hansou almost 8 yearsGood answer (upvoted) but It requires to install bindfs. Why that isn't so good? Well, this is my unusual case: friend gives me old MacBook (I don't know if Pro) to backup data from non booting MacOS. I try latest Ubuntu version and no luck (nouveau driver crash, nomodeset doesn't help). Then I start going back with Ubuntu versions until I find one that boots, 9.10 (yeah), repo servers aren't online anymore. bindfs cannot be installed. The accepted answer solves that problem.
-
Hatoru Hansou almost 8 yearsWhile using sudo to issue commands and launch nautilus with sudo allows access to any directory in the MacOS HD, the uid method is the best when you need more than simply access the files, for example transfer them to a shared folder in another machine (using samba, for example). The elevated nautilus instance cannot explore the network, a normal nautilus instance can, but it doesn't let you copy and paste from the MacOS HD. Give a tempuser the uid 501 solved the problem for me, allowing me to backup data from a non booting MacOS to a shared folder.
-
Heena about 7 yearsFor 16.10, except UID_MIN, also need to add
GID_MIN=500
to/etc/login.def
-
Ashark about 4 yearsapfs-fuse also has similar option. See github.com/sgan81/apfs-fuse and linuxnewbieguide.org/…
-
Taha Malik over 3 yearsAfter following the above steps my normal user account vanished?