How can I automatically set write permissions on mounting a usb drive in linux?

To enable everyone rw access, the key is umask=0 option to mount command.

sudo mount -o umask=0,uid=nobody,gid=nobody /dev/something /mnt/somewhere

umask=0 is enough, uid and gid just for sake of clarity, so you don't see more 'root' owners than necessarily.


@Tom's answer (writing /etc/fstab entry) will allow you to skip sudo and if you write umask=0 as additional option there, you'll get best of both worlds:

Having this in /etc/fstab:

/dev/something /mnt/somewhere auto users,noatime,umask=0 0 0

allows you to just run

mount /dev/something

and everyone has access to all files.


Here's technical note, if you wish to know details:

As man mount says, 'umask=0' will ensure that no additional rules apply to files access mode. For FAT filesystems (which are most widely used on USB disks), there's no access mode stored. But your current process has some umask value set, you can see it if you run just umask in terminal. mount uses that as default and removes access mode of your umask value from all files on mounted disk. Most widely used umask values are (octal) 022 - no group and other write, and 027 - no group write, no any other access.


Add an entry to /etc/fstab. Here is an entry that I added just a few hours ago for my Seagate USB drive:

UUID=4ACC734ECC733375 /media/Linux ext3 errors=remount-ro,defaults,users,noatime,nodiratime 0 0

The key here is the "users" entry that allows users to mount and unmount the drive.

Edit: this works for specific drives - I don't know if it can be enabled for all drives with one entry.


Type mount. This will give the current place it is at. Here is my output.

rick@rick-Main ~ $ mount
/dev/sda4 on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/cgroup type tmpfs (rw)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
none on /run/user type tmpfs (rw,noexec,nosuid,nodev,size=104857600,mode=0755)
none on /sys/fs/pstore type pstore (rw)
/dev/sda6 on /media/DATA1 type vfat (rw,uid=1000,utf8,umask=077)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
systemd on /sys/fs/cgroup/systemd type cgroup (rw,noexec,nosuid,nodev,none,name=systemd)
gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,user=rick)
/dev/sdf1 on /media/usb0 type vfat (rw,noexec,nodev,sync,noatime,nodiratime)

The last is my usb drive automouunted by Linux Mint.

Now type

sudo umount /dev/sdf1

this will unmount drive

now remount correctly.

sudo mount -t vfat /dev/sdf1 /media/usb0 -o rw,users,umask=0