By default you can’t write to Windows NTFS hard disk and USB drives as they appear as read only on the Desktop’s of OS X users – which is a bit of a pain in the ass!
You can write to these disks with a few installs and tweaks in the Terminal, which will make all NTFS drives writeable – there are also some commercial point and click apps that can get the job done if you don’t fancy wading into the Terminal.
This has been tested in both OSX 10.8 Mountain Lion and OS X 10.7 Lion. OSX 10.9 Mavericks Guide is here.
This post has been updated March 2013 and uses the newer fuse4x version 0.9.2
Get Xcode and Brewed Up
To start with you are going to need Xcode and some Unix style application packages – and what makes this easy on OSX is Homebrew, a package manager for OSX, follow this guide if you haven’t already got it,it will get you up to speed on both Xcode and Homebrew first, after that come back here and tackle the rest below which involves installing a couple of apps and tweaking a couple of files.
Once you have Xcode and Homebrew the following will allow you to write to NTFS disks. Launch Terminal:
Install fuse4x
brew install fuse4x
Any necessary dependant software will also get installed including autoconf, automake and libtool
Install ntfs-3g
brew install ntfs-3g
At this point your are prompted to change the mount_ntfs file, the new file will allow the writes to NTFS, these commands will back up the original and then link to the modified one as supplied by Brew/ntfs-3g
Back up the original
sudo mv /sbin/mount_ntfs /sbin/mount_ntfs.orig
Link to the new
sudo ln -s /usr/local/Cellar/ntfs-3g/2013.1.13/sbin/mount_ntfs /sbin/mount_ntfs
The last install is the fuse4x
Install fuse4x kernel instructions
To see the commands required use the command below or simply run the 2 commands below the screen grab.
If you already have an older version of fuse4x you’ll need to also to run the other commands listed before installing this version.
brew info fuse4x-kext
Follow the 2 commands as highlighted
sudo cp -rfX /usr/local/Cellar/fuse4x-kext/0.9.2/Library/Extensions/fuse4x.kext /Library/Extensions
sudo chmod +s /Library/Extensions/fuse4x.kext/Support/load_fuse4x
Re-Attach/Mount Your NTFS Drive
Thats it, now all mounted NTFS drives can be written to, if it doesn’t work off the bat try a restart.
For reference the modified mount_ntfs file that was linked to earlier in the process is similar to Fernando Figueiredo with a very minor tweak (his tutorial uses Mac Ports).
#!/bin/bash VOLUME_NAME="${@:$#}" VOLUME_NAME=${VOLUME_NAME#/Volumes/} USER_ID=499 GROUP_ID=20 if [ `/usr/bin/stat -f %u /dev/console` -ne 0 ]; then USER_ID=`/usr/bin/stat -f %u /dev/console` GROUP_ID=`/usr/bin/stat -f %g /dev/console` fi /usr/local/Cellar/ntfs-3g/2013.1.13/bin/ntfs-3g \ -o volname="${VOLUME_NAME}" \ -o local \ -o noappledouble \ -o negative_vncache \ -o auto_xattr \ -o auto_cache \ -o noatime \ -o windows_names \ -o user_xattr \ -o inherit \ -o uid=$USER_ID \ -o gid=$GROUP_ID \ -o allow_other \ "$@" >> /var/log/mount-ntfs-3g.log 2>&1 exit $?;