M HYPE SPLASH
// news

How to mount a NTFS partition in /etc/fstab?

By Michael Henderson

I have two partitions that I want to mount on startup:

/dev/sda3 /mnt/devel ext4 defaults 0 2
/dev/sda2 /mnt/excess ntfs defaults 0 2

The ext4 partition mounts fine (owned by me, writable only by me), but the NTFS mounts owned by root with R\W permission for all.

How to fix this?

drwxr-xr-x 7 amanda amanda 4096 2012-03-14 19:07 devel
drwxrwxrwx 1 root root 4096 2012-03-14 22:38 excess
1

7 Answers

Permissions for ntfs and vfat file systems must be set with the dmask, fmask and umask options. dmask controls permissions for directories, fmask controls permissions for files, and umask controls both. Since these options set masks, they should be the complement of the permissions you want. For example, rwx for the owner and rx for others is 022 rather than 755.

To set the owner, use the uid and gid options for user and group, respectively. You can find your UID with the command id -u. To find your GID, use id -g. These values are both usually 1000.

A common set of mount options for ntfs is uid=1000,gid=1000,dmask=027,fmask=137. This sets you as the owner of the drive, and sets the permissions to drwxr-x---.

Here are two lines from my /etc/fstab working

UUID=EEA2B69CA2B668AB /WIN_C ntfs-3g defaults,nls=utf8,umask=000,dmask=027,fmask=137,uid=1000,gid=1000,windows_names 0 0
UUID=65AEC0E830EA0497 /WIN_D ntfs-3g rw 0 0

If you get no visible error after rebooting and partitions stay readonly or you get an error similar to:

Error mounting /dev/sda6 at /media/WindowsDrive:
Command-line `mount -t "ntfs" -o "uhelper=udisks2,nodev,nosuid,uid=1000,gid=1000,dmask=0077,fmask=0177" "/dev/sda6" "/media/rolindroy/Media Center"' exited with non-zero exit status 14: The disk contains an unclean file system (0, 0).
Metadata kept in Windows cache, refused to mount.
Failed to mount '/dev/sda6': Operation not permitted The NTFS partition is in an unsafe state.
Please resume and shutdown Windows fully (no hibernation or fast restarting), or mount the volume read-only with the 'ro' mount option

This is because Windows 8 and 10 offer a "Fast Startup" option that depends on a "non-complete" shutdown. You can disable fast startup by following these steps under "Power Options".

11

If you mount the ntfs partition with the permissions option, then chmod / chown will work

/dev/sda2 /mnt/excess ntfs-3g permissions,locale=en_US.utf8 0 2

You can then

sudo chown your_user:your_user /mnt/excess

Easier then uid,dmask,fmask.

2

I had some trouble with this because when I reboot the disk name changes... (sda0 to sdb2)

I fixed the problem by mounting them by UUID in the fstab, you can view the UUID for your harddrives by entering: sudo blkid

Make a back-up of your fstab file:

sudo cp /etc/fstab /etc/fstab.orig

Make sure you tripple check the >>, if you place one > you overwrite your fstab!

sudo blkid >> /etc/fstab

If you still screwed up you can replace your fstab with the original:

sudo cp /etc/fstab.orig /etc/fstab

Next make a folder:

sudo mkdir /media/mydrivename

Configure the fstab:

sudo vim /etc/fstab

Don't forget to comment the output from the blkid with a '#' on the beginning of the lines!

Add this to the fstab file, you can find the UUID in the block on the bottom you inserted with the command above. media/mydrivename is where the partition should be mounted.

UUID=xxxxxxxxxxxxxxxxx /media/mydrivename ntfs permissions,locale=en_US.utf8 0 2

This is my fstab file:

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda2 during installation
UUID=5d4940cf-5cf5-443a-be11-1f7e551962d1 / ext4 errors=remount-ro 0 1
# swap was on /dev/sda1 during installation
UUID=84b7e5e9-08c3-4641-b28b-99e0255e604d none swap sw 0 0
# 500 GB Webserver harddisk from lr-serv-01
UUID=BA9A48D39A488E37 /media/hdd1 ntfs permissions,locale=en_US.utf8 0 2
# 2 TB Movie share harddisk from lr-serv-01
UUID=7EB09666B09624A5 /media/hdd2 ntfs permissions,locale-en_US.utf8 0 2
#/dev/sda1: UUID="10EC004DEC003010" TYPE="ntfs"
#/dev/sda2: LABEL="system" UUID="88A4FE47A4FE3772" TYPE="ntfs"
#/dev/sda3: LABEL="storage_01" UUID="BA9A48D39A488E37" TYPE="ntfs"
#/dev/sdb1: LABEL="storage_02" UUID="7EB09666B09624A5" TYPE="ntfs"
#/dev/sdc1: UUID="84b7e5e9-08c3-4641-b28b-99e0255e604d" TYPE="swap"
#/dev/sdc2: UUID="5d4940cf-5cf5-443a-be11-1f7e551962d1" TYPE="ext4"
#/dev/sdd1: LABEL="storage_spotnet" UUID="EC6E8F416E8F0394" TYPE="ntfs"
#/dev/sdd2: LABEL="storage_backup_pcs" UUID="6C2699D026999BA0" TYPE="ntfs"
#/dev/sdd5: LABEL="storage_series" UUID="7670ABF770ABBC6D" TYPE="ntfs"
#/dev/sdd6: LABEL="storage_winmx" UUID="564AB81B4AB7F5B9" TYPE="ntfs" 

Reboot the system by typing:

sudo reboot

To check if the partition is mounted you can type df -k.

Give ownership to yourself:

sudo chown -R USERNAME:USERNAME /media/mydrivename

Did this on Ubuntu Server 14.04.01!

Hope this answer helps someone ;-)

5

You can use ntfs-config GUI utility to mount NTFS partitions in fstab.

Mount NTFS Windows Partition FSTAB

ntfs-3g driver is required to provide full read-write support for the NTFS partition and gksu to run NTFS Configuration GUI with root privileges.

sudo apt-get install ntfs-3g ntfs-config
sudo apt-get install gksu

Search for and open ‘NTFS Configuration Tool’ from the Unity Dash. In the window that appears select the partitions you want to configure. Here, I would prefer to have only my storage partition mounted. Just tick ‘Enable write support for internal device’.

NTFS-Config Utility will backup the original fstab file, so we can easily review the changes that were made by the application. To review the changes,

cat /etc/fstab-ntfs-config-save
cat /etc/fstab
0

I use the following that I find correctly gives me permissions upon mount (NTFS drive from a dual-boot system setup):

Edit /etc/fstab:

UUIDs can be found in /dev/disk/by-uuid/ (usually map to /dev/sd*)

Replace <your uuid> with your UUID

UUID=<your uuid> /mnt/e ntfs auto,users,uid=1000,gid=1000,dmask=027,fmask=137 0 0

Might not be a good solution , but you can always map user id to your own one , or the group id:

Just an example here , my user id was 1000

/dev/sda5 /mnt/excess ntfs defaults,uid=1000,rw 0 0

In that case , all files mounted owned by user ided 1000

2

Note that if you mount your ntfs drive using a label and wish to be able to change the permissions of directories or files on this drive then the following works well (edit the /etc/fstab e.g. sudo nano /etc/fstab and then add):

LABEL=Portable_HD_2TB /media/mintbox2/Portable_HD_2TB ntfs permissions,defaults 0 2

Whereas the below would NOT allow you to change permissions of directories or files:

LABEL=Portable_HD_2TB /media/mintbox2/Portable_HD_2TB ntfs defaults 0 2