Mount specific ntfs directory on Linux

I realize this question is almost two years old, but I answer it for those who find this in search and need the answer.

First, mount your Windows partition as read-only. If your Windows partition is the first partition on your first hard drive add this to the file /etc/fstab:

/dev/sda1       /mnt/windows   ntfs  ro,umask=0222,defaults 0 0

You have to create a directory called windows first.

mkdir /mnt/windows

If you want to mount the partition after boot and not be logged in as root, use this:

/dev/sda1  /mnt/windows   ntfs  user,ro,umask=0222,defaults 0 0

To mount a specific Windows directory as read and write, use ntfs-3g or fuse-ntfs-3g. Most people will want to mount their Documents, so I will use this use example. If you are user David on Windows and david on Linux, use this (substituting fuse-ntfs-3g for ntfs-3g or whatever current kernel module you have installed):

/mnt/windows/Users/David/Documents  /home/David/Documents  ntfs-3g  rbind,user,umask=0222,defaults 0 0

rbind is what remounts an already location to another. For a more detailed explanation of other options in the comma separated list, type info ntfs-3g in a command console. The Documents directory in Linux must exist and should be empty. This line must be after the line that mounts the Windows partition.

This is for Windows Vista and 7. If you have Windows XP, use /mnt/windows/"Documents and Settings"/David/Documents. The quotations are important because mount cannot accept spaces in the directory name even though Linux has no problems with spaces in directories.

If you don't have a kernel module that can mount NTFS as read and write, you need to install one.

Ubuntu comes with ntfs-3g, automount, and ntfsconfig. Any currently connected partition should be automatically detected and set up to be mounted automatically. Ubuntu also mounts nonnative partitions like Windows under /media instead, usually with the name of the operating system, so your Windows 7 partition is mounted at /media/Windows 7. You will find your fstab entry uses unicode strings for special characters so that the line says /media/Windows\0407, where \040 is substituted for the space without the need for quotes.

To mount David's Windows 7 documents in david's Linux home directory in Ubuntu, put this in /etc/fstab:

/media/Windows\0407/Users/David/Documents  /home/David/Documents  ntfs-3g  rbind,nosuid,user,umask=0222  0  0

I hope this helps.


I am not sure whether this is due to an update of mount at some point in the past year or so, but the way suggested by @thomassisson's answer no longer works. According to man mount, rbind can not alter the mount options of the whole drive. Instead, a remount command must be used. I quote the relevant part of the man page below:

mount --rbind olddir newdir

or shortoption

mount -R olddir newdir

Note that the filesystem mount options will remain the same as those on the original mount point, and cannot be changed by passing the -o option along with --bind/--rbind. The mount options can be changed by a separate remount command, for example:

mount --bind olddir newdir mount -o remount,ro newdir

Unfortunately, NTFS-3G currently does not seem to support remount. You must first umount the partition and then mount it, which essentially closes the door for the trick.