How to Mount an external NTFS formatted hard drive or USB stick with read AND write access in Linux

Published:
Title:  How to mount an external hard drive formatted as NTFS to Linux with Read/Write capabilities . . . .difficulty - moderate.  Time required - about 5 minutes
Author: Rich Johnson
 
 
 mount: wrong fs type, bad option, bad superblock on /dev/sd**
 
 If your like me or the numberless amount of people that have received this
 error when trying to access your new external hard drive (formatted as
 NTFS), despair not as there is a way around this.  If you've done some
 searching on forums you'll have probably noticed that most people are
 resolute in their answer that Linux can only READ from an external (USB
 based) hard drive formatted as NTFS, but cannot write.  This is not true.
 Here's how you do it.
 
 This process includes editing your fstab file located in the /etc
 directory.  As always, before editing this file (or any system file) MAKE A
 BACKUP!!!  First of all, make sure you have the following packages installed
 on your system:
 
 ntfs-3g
 
 I use openSuSE 11.0 Linux.  This package was found in the openSUSE-11.0-Oss
 repository.  It was also installed by default in openSuSE 11.0, so you may
 not even need to install it. Now, with root user privileges, create a mount
 point for your external drive in the /mnt directory.  I named my folder
 "ext_drive"
 
 # su
 # mkdir /mnt/ext_drive
 
 You then need to give all users read and write permissions to this folder.
 This way after you mount your drive you can write files to it! You can do this
 via the command line very easily, or you can sign in as root, right click on the
 folder you created and set permissions for all users to read and write and on
 all sub directories.
 
 Next, plug the drive in and find out the device ID.  I did this by opening
 Konquerer, and going to /dev/disk/by-id.  In here you will see all of your
 drives by ID.  locate your external drive, it should be easily
 identifiable.  I have a Seagate external drive and I found several Seagate
 entries.  Locate the one with "part1" at the end.  Mine looked like this:
 
 usb-Seagate_FreeAgent_2GEVF1ZP-0:0-part1
 
 Copy this name.  Next, you need to edit the fstab file to make Linux mount
 the thing on boot up.  I used kate file editor to edit the file, you may use
 vi or any other text editor. Still with root privileges, edit the fstab
 file:  (MAKE A BACKUP!!!!)
 
 # kate /etc/fstab
 
 Add the following line, changing the device ID line that you copied in the
 last step to your device ID:
 
 /dev/usb-Seagate_FreeAgent_2GEVF1ZP-0:0-part1     /mnt/ext_drive
 ntfs-3g    silent,umask=0,locale=en_US.utf8   0 0
 
 Restart your computer and it should now be mounted and you should have
 read/write access to it.  The only downside to this method is it will ALWAYS
 mount it, even if its not plugged in, so if you look at sysinfo:/ in
 Konquerer, you will see the drive there, if you click on it you will get an
 error.  That's OK with me.  If you know of a better way to do this, please
 email me at unassassinable at gmail dot com.

Because this method uses the fstab file, you need to have the drive plugged
in at boot time.  If it is not plugged in when you boot into Linux, you will
receive the error "Permission denied".
1
7,708 Views

Comments (0)

Have a question about something in this article? You can receive help directly from the article author. Sign up for a free trial to get started.