How can I mount some device with read-write access for a given user?
There's no generic way to do exactly that. If the filesystem doesn't have a notion of file ownership, it probably has a mount option (
uid) to decide which user the files will belong to. If the filesystem does have a notion of file ownership, mount it read-write, and users will be able to write every file they have permission to.
If you only want a specific user to access the filesystem, and there is a FUSE driver for it, then arrange for the user to have read-write access to the device and mount it through FUSE as that user.
Another way to only let a specific user (or a specific group, or better fine-tuning through an ACL) is to place the mount point underneath a restricted-access directory:
mkdir -p /media/restricted/joe/somedisk chown joe /media/restricted/joe/somedisk chmod 700 /media/restricted/joe/somedisk mount /dev/sdz42 /media/restricted/joe/somedisk
If you want some users to have read-write access and others to have read-only access regardless of file permissions, mount the filesystem read-write under a restricted access directory and use bindfs to make a read-only view of that filesystem.
bindfs -o perms=a-w /media/private/somedisk /media/public-read-only/somedisk
You can also make a bindfs view read-write to some users and read-only for others; see the
-M options in the bindfs man page. Remember to put the primary mount point under a directory that only root can access.