linux - Mount a drive read-write without remounting

21
2014-04
  • Jakob Weisblat

    I have a flash drive mounted in read-only mode. I cannot unmount it, but I want to be able to write to it. I tried mounting it in a second place but that didn't work. It is in use, so I cannot unmount it. Is this possible or am I stuck with read only (filesystem is vfat if it makes any difference).

  • Answers
  • Kyle Jones
    mount -o remount,rw
    

    is the way to do it on Linux, but which options are changeable varies across filesystems.


  • Related Question

    How to mount a HFS partition in Ubuntu as Read/Write?
  • GiH

    I plugged in my external harddrive (which was formatted on my Mac into HFS+ journaled) to my Ubuntu desktop 9.04 64bit. I am not able to get the drive to mount with write capability, how do I do that? Right now all I'm getting is read access, I tried

    sudo mount -t hfsplus /dev/sdf2 /media/"Portable HD"
    

    but that still gave me only read access... ideas??


  • Related Answers
  • Olli

    You need to turn off the journaling if you want to write to it from Ubuntu. Ubuntu only has support for writing to non-journaled HFS+ volumes.

    On your Mac:

    • Open Disk Utility under Applications -> Utilities
    • Select the volume to disable journaling on.
    • Choose Disable Journaling from the File menu. (On later Mac OS versions you'll have to hold down the option button when you click the File menu. Or if you like Apple+J)

    Disabling journaling from HFS+ is no longer possible with OS X 10.9.

  • Blaisorblade

    First, make sure that you have hfsprogs installed. Example installation command:

    sudo apt-get install hfsprogs
    

    Next, mount or remount the HFS+ drive; commands need to be as follows:

    sudo mount -t hfsplus -o force,rw /dev/sdx# /media/mntpoint
    

    or

    sudo mount -t hfsplus -o remount,force,rw /mount/point
    

    Finally, if the drive was improperly unmounted or has otherwise become partially corrupted run fsck.hfsplus (provided here by Jayson) as such:

    sudo fsck.hfsplus /dev/sdx#
    
  • mivk

    You can enable writing to HFS+ in Linux even if you didn't disable journaling. In addition to hfsplus which you already have, you need to have hfsprogs installed:

    sudo apt-get install hfsprogs
    

    Then, use the -o force option:

    sudo mount -o force /dev/sdX /your/mount/point
    

    If the drive has been mounted automatically (as it should be on a desktop system like Ubuntu), you can enable write with

    sudo mount -o remount,rw,force /mount/point
    

    or

    sudo mount -o remount,rw,force /dev/sdx
    

    /mount/point would usually be /media/Your_drive_label /dev/sdx is your HFS+ device

    Use mount -l to find which device is already mounted on which mount point.

  • Zach Latta

    Have you tried to match permissions?

    By default, Mac OS X formats volumes in journaled HFS+ volumes. Journaling is a feature that improves data reliability, and unfortunately it makes HFS drives read-only in Linux.

    To disable journaling, just boot into OS X and fire up Disk Utility. Click on your HFS partition, hold the Option key, and click File in the menu bar. A new option to Disable Journaling will come up in the menu. Click that, and reboot into Linux. You should have read and write access to your HFS partition—however, the permissions on your Mac user's home folder will prevent you from reading or writing those files. we just need to change our UID in one OS so that it matches the UID in the other. Unless you have a reason for choosing otherwise, we're going to change our Linux UID to match our OS X one, since it's a bit easier. By default, the first user in OS X has a UID of 501, but you can double check this by going into System Preferences in OS X, right-clicking on your user, and hitting Advanced Options. If your User ID is something different from 501, replace 501 with your other UID in the terminal commands below.

    Boot into Linux (we're using Ubuntu in this example) and fire up the Terminal. First, we're going to add a temporary user, since we don't want to edit a user that we're currently logged into. So, run the following commands in the Terminal, hitting Enter after each one:

    sudo useradd -d /home/tempuser -m -s /bin/bash -G admin tempuser
    
    sudo passwd tempuser
    

    Type in a new password for the temporary user when prompted. Reboot and log in as tempuser. Then, open up the Terminal and type in the following commands, once again hitting enter after each one (and replacing yourusername with your Linux user's username):

    sudo usermod --uid 501 yourusername
    
    sudo chown -R 501:yourusername /home/yourusername
    

    This will change your Linux user's UID to 501 and fix your home folder permissions so that you still own them. Now, you should be able to read and write to both your Mac and Linux user's home folder, no matter what OS you're logged into.

    You may also want to fix your login screen, since by default Ubuntu won't list users with a UID of less than 1000. To do this, just open a Terminal and run gksudo gedit /etc/login.defs and search for UID_MIN in the text file. Change that value from 1000 to 501, and when you reboot your user will be listed in the login screen.

    http://lifehacker.com/5702815/the-complete-guide-to-sharing-your-data-across-multiple-operating-systems

  • valbaca

    In Mac OS X 10.4 and later, press Option to make Disable Journaling visible in the File menu.