22
Make NTFS writable again (on OSX)
Long story short: NTFS is a proprietary filesystem, owned by Microsoft. And thanks to this, all the NTFS formatted hard drives are read-only on a OSX OS.
Following you can find instructions on how to make NTFS writable again, depending on your operating system.
Update Xcode via Terminal:
$ xcode-select --install
Reboot your Mac, and when the boot screen appears (the one with the Apple logo), press CMD+R, and go into recovery mode.
Once here, open the terminal from the menu' bar and execute the following command.
$ csrutil disable
If the operation is successful, reboot the machine.
Install osxfuse via Homebrew
$ brew install --cask osxfuse
Reboot.
The original Homebrew formulae has been disabled since it was not open-source software (you can find the entire motivation in the links at the end of the page).
You can use a fork made by an user:
brew install darelover/ntfs-3g/ntfs-3g
Guess what? Reboot again.
First, backup the original mount file:
$ sudo mv /sbin/mount_ntfs /sbin/mount_ntfs.orig
Now, create the new mount file:
sudo ln -s /usr/local/sbin/mount_ntfs /sbin/mount_ntfs
Note: /usr/local/sbin/mount_ntfs
should be a symbolic link to the folder created by ntfs-3g. Usually its path should be /usr/local/Cellar/ntfs-3g/<version_number>/sbin
Attach your hard drive. If you're lucky, everything should be working fine.
But you can notice that in the Finder the files are not visible, you can see only folders (via Terminal you should see the entire filesystem correctly).
If you are unlucky, follow this step.
Using the Terminal, go in the ntfs-3g folder, make a backup of the mount_ntfs file
and create a new one:
$ cd /usr/local/Cellar/ntfs-3g/<version_number>/sbin
$ sudo mv mount_ntfs mount_ntfs.orig
$ sudo nano mount_ntfs
Copy the following script in the new file you've just created:
#!/bin/bash
VOLUME_NAME="${@:$#}"
VOLUME_NAME=${VOLUME_NAME#/Volumes/}
USER_ID=501
GROUP_ID=20
TIMEOUT=20
if [ `/usr/bin/stat -f "%u" /dev/console` -eq 0 ]; then
USERNAME=`/usr/bin/defaults read /Library/Preferences/com.apple.loginwindow | /usr/bin/grep autoLoginUser | /usr/bin/awk '{ print $3 }' | /usr/bin/sed 's/;//'`
if [ "$USERNAME" = "" ]; then
until [ `stat -f "%u" /dev/console` -ne 0 ] || [ $TIMEOUT -eq 0 ]; do
sleep 1
let TIMEOUT--
done
if [ $TIMEOUT -ne 0 ]; then
USER_ID=`/usr/bin/stat -f "%u" /dev/console`
GROUP_ID=`/usr/bin/stat -f "%g" /dev/console`
fi
else
USER_ID=`/usr/bin/id -u $USERNAME`
GROUP_ID=`/usr/bin/id -g $USERNAME`
fi
else
USER_ID=`/usr/bin/stat -f "%u" /dev/console`
GROUP_ID=`/usr/bin/stat -f "%g" /dev/console`
fi
/usr/local/opt/ntfs-3g/bin/ntfs-3g \
-o volname="${VOLUME_NAME}" \
-o local \
-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
exit $?;
Save the file, save the world.
Change the file's permissions:
$ sudo chmod 555 mount_ntfs
Remove and then reconnect your disk, et-voila'!.
ONLY FOR EL CAPITAIN
Reboot your Mac, and when the boot screen appears (the one with the Apple logo), press CMD+R, and go into recovery mode.
Once here, open the terminal from the menu' bar and execute the following command.
$ csrutil disable
If the operation is successful, reboot the machine.
Download osxfuse and install it. Flag all the provided options when requested.
Once the installation is finished, reboot the machine.
Download and install ntfs-3g. Unfortunately this application is no longer maintained, but this version is still enough for our purposes.
When asked, check the option nocaching.
On El Capitain an error message could be displayed at the end of the installation process. Just ignore it.
Reboot the system.
Download and install fuse-wait.
Attach your hard drive and check that the disk is writable.
ONLY FOR EL CAPITAIN
Repeat the step 1, but now execute this command:
$ csrutil enable
If the operation is successful, reboot the machine.
Homebrew: https://brew.sh/
ntfs-3g original formulae: https://formulae.brew.sh/formula/ntfs-3g#default
Why ntfs-3g formulae has been disabled: https://github.com/Homebrew/homebrew-core/pull/64491