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.