1. Insert USB drive (let's say it is detected as /dev/sdb with 1 partition)
2. If automounted, unmount (sudo umount /dev/sdb1)
3. sudo blockdev --setro /dev/sdb1
4. If filesystem in /dev/sdb1 is NTFS, mount will fail with permission denied error -- it seems that the mount helper is not passing the ro mount flag.
If filesystem in /dev/sdb1 is vfat/exfat or ext2/3/4, it will be mounted with ro option. I have not tested any other filesystem.
I encountered this in:
Ubuntu 17.10 with udisks2 2.6.5
Debian 9 (Jessie) with udisks 2.1.x
Debian 10 (Buster) with udisks 2.7.5