These instructions have been liberally copied [http://fernandofig.wordpress.com/2011/08/08/ntfs-write-support-on-osx-lion-with-ntfs-3g-f/ from this excellent blog post]. You should also read the NTFS-3G page on [https://github.com/osxfuse/osxfuse/wiki/NTFS-3G osxfuse wiki], as it might be more up-to-date. === Step 1. Install the ntfs-3g port. === {{{ sudo port install ntfs-3g }}} === Step 2. Find out your userid and groupid. === User ID: {{{ id -u }}} Group ID: {{{ id -g }}} === Step 3. Use a modified mount_ntfs executable and save the OS X original to {{{/sbin/mount_ntfs.orig}}} === (Note to do this under El Capitan, you must first disable SIP. See [http://www.howtogeek.com/230424/how-to-disable-system-integrity-protection-on-a-mac-and-why-you-shouldnt/ this how-to]\\ On 10.15 Catalina, you don't need to disable SIP, but you will need to do the following command first: {{{ sudo mount -uw / }}} The reason is because the OS mounts the root filesystem as 'read-only'. The above command will make it writeable only for this instance. It will turn to back to 'read-only' when you restart.) {{{ sudo mv /sbin/mount_ntfs /sbin/mount_ntfs.orig sudo touch /sbin/mount_ntfs sudo chmod 0755 /sbin/mount_ntfs sudo chown 0:0 /sbin/mount_ntfs sudo nano /sbin/mount_ntfs }}} Then paste in the following code and save it by typing Control-X and pressing "Y". NOTE: - You can optionally substitute in your User ID and Group ID (from Step 2 above) in place of 501 and 20 in lines 4 and 5 below. - This script also assumes the standard MacPorts install location of {{{/opt/local/}}} so you will need to modify it if yours is different. {{{ #!/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 /opt/local/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/ntfsmnt.log exit $?; }}}