I've installed usbmount to auto-mount usb pen drives. This works OK but they're mounted with owner root and root r/w permissions.
Searching online people have mentioned modifying HAL and udev rules.
Can someone please explain what exactly I need to do?
cat /usr/share/hal/fdi/policy/10osvendor/20-storage-methods.fdi:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<deviceinfo version="0.2">
<device>
<match key="info.udi" string="/org/freedesktop/Hal/devices/computer">
<append key="info.callouts.add" type="strlist">hal-storage-cleanup-all-mountpoints</append>
</match>
<!-- poll drives with removable media -->
<match key="storage.removable" bool="true">
<append key="info.addons" type="strlist">hald-addon-storage</append>
</match>
<match key="volume.is_disc" bool="true">
<match key="volume.disc.has_audio" bool="true">
<append key="info.interfaces" type="strlist">org.freedesktop.Hal.Device.Volume</append>
<append key="org.freedesktop.Hal.Device.Volume.method_names" type="strlist">Eject</append>
<append key="org.freedesktop.Hal.Device.Volume.method_signatures" type="strlist">as</append>
<append key="org.freedesktop.Hal.Device.Volume.method_argnames" type="strlist">extra_options</append>
<append key="org.freedesktop.Hal.Device.Volume.method_execpaths" type="strlist">hal-storage-eject</append>
</match>
<match key="volume.disc.is_blank" bool="true">
<append key="info.interfaces" type="strlist">org.freedesktop.Hal.Device.Volume</append>
<append key="org.freedesktop.Hal.Device.Volume.method_names" type="strlist">Eject</append>
<append key="org.freedesktop.Hal.Device.Volume.method_signatures" type="strlist">as</append>
<append key="org.freedesktop.Hal.Device.Volume.method_argnames" type="strlist">extra_options</append>
<append key="org.freedesktop.Hal.Device.Volume.method_execpaths" type="strlist">hal-storage-eject</append>
</match>
</match>
<!-- this is to be able to mount media in drives we cannot poll, e.g. IDE Zip Drives and PC style floppy drives -->
<match key="storage.media_check_enabled" bool="false">
<match key="storage.no_partitions_hint" bool="true">
<append key="info.interfaces" type="strlist">org.freedesktop.Hal.Device.Volume</append>
<append key="org.freedesktop.Hal.Device.Volume.method_names" type="strlist">Mount</append>
<append key="org.freedesktop.Hal.Device.Volume.method_signatures" type="strlist">ssas</append>
<append key="org.freedesktop.Hal.Device.Volume.method_argnames" type="strlist">mount_point fstype extra_options</append>
<append key="org.freedesktop.Hal.Device.Volume.method_execpaths" type="strlist">hal-storage-mount</append>
<append key="org.freedesktop.Hal.Device.Volume.method_names" type="strlist">Unmount</append>
<append key="org.freedesktop.Hal.Device.Volume.method_signatures" type="strlist">as</append>
<append key="org.freedesktop.Hal.Device.Volume.method_argnames" type="strlist">extra_options</append>
<append key="org.freedesktop.Hal.Device.Volume.method_execpaths" type="strlist">hal-storage-unmount</append>
<append key="org.freedesktop.Hal.Device.Volume.method_names" type="strlist">Eject</append>
<append key="org.freedesktop.Hal.Device.Volume.method_signatures" type="strlist">as</append>
<append key="org.freedesktop.Hal.Device.Volume.method_argnames" type="strlist">extra_options</append>
<append key="org.freedesktop.Hal.Device.Volume.method_execpaths" type="strlist">hal-storage-eject</append>
<!-- allow these mount options for all file systems -->
<match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" string="Linux">
<append key="volume.mount.valid_options" type="strlist">ro</append>
<append key="volume.mount.valid_options" type="strlist">sync</append>
<append key="volume.mount.valid_options" type="strlist">dirsync</append>
<append key="volume.mount.valid_options" type="strlist">noatime</append>
<append key="volume.mount.valid_options" type="strlist">nodiratime</append>
<append key="volume.mount.valid_options" type="strlist">relatime</append>
<append key="volume.mount.valid_options" type="strlist">noexec</append>
<append key="volume.mount.valid_options" type="strlist">quiet</append>
<append key="volume.mount.valid_options" type="strlist">remount</append>
<append key="volume.mount.valid_options" type="strlist">exec</append>
<!-- As this is removable media give some leeway -->
<append key="volume.mount.valid_options" type="strlist">utf8</append>
<append key="volume.mount.valid_options" type="strlist">shortname=</append>
<append key="volume.mount.valid_options" type="strlist">codepage=</append>
<append key="volume.mount.valid_options" type="strlist">iocharset=</append>
<append key="volume.mount.valid_options" type="strlist">umask=</append>
<append key="volume.mount.valid_options" type="strlist">uid=</append>
</match>
<match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" string="FreeBSD">
<append key="volume.mount.valid_options" type="strlist">ro</append>
<append key="volume.mount.valid_options" type="strlist">noexec</append>
<append key="volume.mount.valid_options" type="strlist">noatime</append>
</match>
</match>
</match>
<match key="volume.fsusage" string="filesystem">
<!-- Here follow volumes we specifically want to ignore - it is the -->
<!-- responsibility of software higher in the stack (e.g. gnome-vfs) -->
<!-- amd mount programs (e.g. Mount() on HAL) to respect volume.ignore -->
<merge key="volume.ignore" type="bool">false</merge>
<!-- Should always ignore Apple Bootstrap partitions (it would be -->
<!-- a security hole to mount it) - TODO: should use the bootable -->
<!-- flag from the Mac partition table instead -->
<match key="volume.fstype" string="hfs">
<match key="volume.label" string="bootstrap">
<merge key="volume.ignore" type="bool">true</merge>
</match>
</match>
<!-- EFI firmware partitions -->
<match key="volume.fstype" string="vfat">
<match key="volume.label" string="EFI">
<merge key="volume.ignore" type="bool">true</merge>
</match>
</match>
<match key="volume.fstype" string_outof="ntfs;vfat">
<match key="volume.label" string="RECOVERY">
<merge key="volume.ignore" type="bool">true</merge>
</match>
<!-- ASUS ships some desktop with a recovery partition -->
<match key="volume.label" string="PQSERVICE">
<merge key="volume.ignore" type="bool">true</merge>
</match>
<!-- HP ships desktops with a recovery partition -->
<match key="volume.label" string="HP_RECOVERY">
<merge key="volume.ignore" type="bool">true</merge>
</match>
<!-- Sony ships laptops with a recovery partition -->
<match key="volume.label" string="Recovery Partition">
<merge key="volume.ignore" type="bool">true</merge>
</match>
<!-- DELL ships some laptops with a visible recovery partition -->
<match key="volume.label" string_outof="DellUtility;DellRestore">
<merge key="volume.ignore" type="bool">true</merge>
</match>
<!-- Lenovo and IBM ship with a various recovery partitions -->
<match key="volume.label" string_outof="IBM_SERVICE;SERVICEV001;SERVICEV002">
<merge key="volume.ignore" type="bool">true</merge>
</match>
</match>
<append key="info.interfaces" type="strlist">org.freedesktop.Hal.Device.Volume</append>
<append key="org.freedesktop.Hal.Device.Volume.method_names" type="strlist">Mount</append>
<append key="org.freedesktop.Hal.Device.Volume.method_signatures" type="strlist">ssas</append>
<append key="org.freedesktop.Hal.Device.Volume.method_argnames" type="strlist">mount_point fstype extra_options</append>
<append key="org.freedesktop.Hal.Device.Volume.method_execpaths" type="strlist">hal-storage-mount</append>
<append key="org.freedesktop.Hal.Device.Volume.method_names" type="strlist">Unmount</append>
<append key="org.freedesktop.Hal.Device.Volume.method_signatures" type="strlist">as</append>
<append key="org.freedesktop.Hal.Device.Volume.method_argnames" type="strlist">extra_options</append>
<append key="org.freedesktop.Hal.Device.Volume.method_execpaths" type="strlist">hal-storage-unmount</append>
<match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" string="Linux">
<match key="volume.linux.is_device_mapper" bool="false">
<append key="org.freedesktop.Hal.Device.Volume.method_names" type="strlist">Eject</append>
<append key="org.freedesktop.Hal.Device.Volume.method_signatures" type="strlist">as</append>
<append key="org.freedesktop.Hal.Device.Volume.method_argnames" type="strlist">extra_options</append>
<append key="org.freedesktop.Hal.Device.Volume.method_execpaths" type="strlist">hal-storage-eject</append>
</match>
</match>
<match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" string="FreeBSD">
<append key="org.freedesktop.Hal.Device.Volume.method_names" type="strlist">Eject</append>
<append key="org.freedesktop.Hal.Device.Volume.method_signatures" type="strlist">as</append>
<append key="org.freedesktop.Hal.Device.Volume.method_argnames" type="strlist">extra_options</append>
<append key="org.freedesktop.Hal.Device.Volume.method_execpaths" type="strlist">hal-storage-eject</append>
</match>
<!-- allow these mount options for all file systems -->
<match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" string="Linux">
<append key="volume.mount.valid_options" type="strlist">ro</append>
<append key="volume.mount.valid_options" type="strlist">sync</append>
<append key="volume.mount.valid_options" type="strlist">dirsync</append>
<append key="volume.mount.valid_options" type="strlist">noatime</append>
<append key="volume.mount.valid_options" type="strlist">nodiratime</append>
<append key="volume.mount.valid_options" type="strlist">relatime</append>
<append key="volume.mount.valid_options" type="strlist">noexec</append>
<append key="volume.mount.valid_options" type="strlist">quiet</append>
<append key="volume.mount.valid_options" type="strlist">remount</append>
<append key="volume.mount.valid_options" type="strlist">exec</append>
</match>
<match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" string="FreeBSD">
<append key="volume.mount.valid_options" type="strlist">ro</append>
<append key="volume.mount.valid_options" type="strlist">noexec</append>
<append key="volume.mount.valid_options" type="strlist">noatime</append>
</match>
<!-- allow these mount options for vfat -->
<match key="volume.fstype" string="vfat">
<match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" string="Linux">
<append key="volume.mount.valid_options" type="strlist">utf8</append>
<append key="volume.mount.valid_options" type="strlist">shortname=</append>
<append key="volume.mount.valid_options" type="strlist">codepage=</append>
<append key="volume.mount.valid_options" type="strlist">iocharset=</append>
<append key="volume.mount.valid_options" type="strlist">umask=</append>
<append key="volume.mount.valid_options" type="strlist">dmask=</append>
<append key="volume.mount.valid_options" type="strlist">fmask=</append>
<append key="volume.mount.valid_options" type="strlist">uid=</append>
<append key="volume.mount.valid_options" type="strlist">gid=</append>
<append key="volume.mount.valid_options" type="strlist">flush</append>
</match>
<match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" string="FreeBSD">
<append key="volume.mount.valid_options" type="strlist">longnames</append>
<append key="volume.mount.valid_options" type="strlist">shortnames</append>
<append key="volume.mount.valid_options" type="strlist">nowin95</append>
<append key="volume.mount.valid_options" type="strlist">-u=</append>
<append key="volume.mount.valid_options" type="strlist">-g=</append>
<append key="volume.mount.valid_options" type="strlist">-m=</append>
<append key="volume.mount.valid_options" type="strlist">-M=</append>
<append key="volume.mount.valid_options" type="strlist">-L=</append>
<append key="volume.mount.valid_options" type="strlist">-D=</append>
<append key="volume.mount.valid_options" type="strlist">large</append>
</match>
</match>
<!-- allow these mount options for hfs -->
<match key="volume.fstype" string="hfs">
<append key="volume.mount.valid_options" type="strlist">gid=</append>
<append key="volume.mount.valid_options" type="strlist">uid=</append>
<append key="volume.mount.valid_options" type="strlist">force</append>
</match>
<!-- allow these mount options for hfsplus -->
<match key="volume.fstype" string="hfsplus">
<append key="volume.mount.valid_options" type="strlist">force</append>
</match>
<!-- allow these mount options for ntfs -->
<match key="volume.fstype" string="ntfs">
<match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" string="Linux">
<append key="volume.mount.valid_options" type="strlist">uid=</append>
<append key="volume.mount.valid_options" type="strlist">gid=</append>
<append key="volume.mount.valid_options" type="strlist">umask=</append>
<append key="volume.mount.valid_options" type="strlist">utf8</append>
</match>
<match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" string="FreeBSD">
<append key="volume.mount.valid_options" type="strlist">-u=</append>
<append key="volume.mount.valid_options" type="strlist">-g=</append>
<append key="volume.mount.valid_options" type="strlist">-m=</append>
<append key="volume.mount.valid_options" type="strlist">-a</append>
<append key="volume.mount.valid_options" type="strlist">-i</append>
<append key="volume.mount.valid_options" type="strlist">-C=</append>
<append key="volume.mount.valid_options" type="strlist">-W=</append>
</match>
</match>
<!-- allow these mount options for ext3 -->
<match key="volume.fstype" string="ext3">
<append key="volume.mount.valid_options" type="strlist">acl</append>
<append key="volume.mount.valid_options" type="strlist">user_xattr</append>
<append key="volume.mount.valid_options" type="strlist">data=</append>
</match>
<!-- allow these mount options for ext2 -->
<match key="volume.fstype" string="ext2">
<append key="volume.mount.valid_options" type="strlist">acl</append>
<append key="volume.mount.valid_options" type="strlist">user_xattr</append>
</match>
<!-- allow these mount options for reiserfs -->
<match key="volume.fstype" string="reiserfs">
<append key="volume.mount.valid_options" type="strlist">acl</append>
<append key="volume.mount.valid_options" type="strlist">user_xattr</append>
</match>
<!-- allow these mount options for ufs -->
<match key="volume.fstype" string="ufs">
<match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" string="Linux">
<append key="volume.mount.valid_options" type="strlist">ufstype=</append>
</match>
</match>
<!-- udf -->
<match key="volume.fstype" string="udf">
<match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" string="Linux">
<append key="volume.mount.valid_options" type="strlist">uid=</append>
<append key="volume.mount.valid_options" type="strlist">umask=</append>
</match>
<match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" string="FreeBSD">
<append key="volume.mount.valid_options" type="strlist">-C=</append>
<append key="volume.mount.valid_options" type="strlist">-v</append>
</match>
</match>
<!-- iso9660 -->
<match key="volume.fstype" string="iso9660">
<match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" string="Linux">
<append key="volume.mount.valid_options" type="strlist">utf8</append>
<append key="volume.mount.valid_options" type="strlist">uid=</append>
<append key="volume.mount.valid_options" type="strlist">mode=</append>
<append key="volume.mount.valid_options" type="strlist">iocharset=</append>
</match>
<match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" string="FreeBSD">
<append key="volume.mount.valid_options" type="strlist">extatt</append>
<append key="volume.mount.valid_options" type="strlist">gens</append>
<append key="volume.mount.valid_options" type="strlist">nojoliet</append>
<append key="volume.mount.valid_options" type="strlist">norrip</append>
<append key="volume.mount.valid_options" type="strlist">nostrictjoliet</append>
<append key="volume.mount.valid_options" type="strlist">-s=</append>
<append key="volume.mount.valid_options" type="strlist">-C=</append>
<append key="volume.mount.valid_options" type="strlist">-v</append>
</match>
</match>
<!-- allow these unmount options -->
<match key="/org/freedesktop/Hal/devices/computer:system.kernel.name" string="Linux">
<append key="volume.unmount.valid_options" type="strlist">lazy</append>
</match>
</match>
<!-- make sure we export Eject on discs where we don't recognize the file system -->
<match key="volume.is_disc" bool="true">
<match key="volume.fsusage" string="">
<append key="info.interfaces" type="strlist">org.freedesktop.Hal.Device.Volume</append>
<append key="org.freedesktop.Hal.Device.Volume.method_names" type="strlist">Eject</append>
<append key="org.freedesktop.Hal.Device.Volume.method_signatures" type="strlist">as</append>
<append key="org.freedesktop.Hal.Device.Volume.method_argnames" type="strlist">extra_options</append>
<append key="org.freedesktop.Hal.Device.Volume.method_execpaths" type="strlist">hal-storage-eject</append>
</match>
</match>
<match key="storage.requires_eject" bool="true">
<!-- storage Eject causes eject on each volume on this storage -->
<append key="info.interfaces" type="strlist">org.freedesktop.Hal.Device.Storage</append>
<append key="org.freedesktop.Hal.Device.Storage.method_names" type="strlist">Eject</append>
<append key="org.freedesktop.Hal.Device.Storage.method_signatures" type="strlist">as</append>
<append key="org.freedesktop.Hal.Device.Storage.method_argnames" type="strlist">extra_options</append>
<append key="org.freedesktop.Hal.Device.Storage.method_execpaths" type="strlist">hal-storage-eject</append>
<append key="info.interfaces" type="strlist">org.freedesktop.Hal.Device.Storage</append>
<append key="org.freedesktop.Hal.Device.Storage.method_names" type="strlist">CloseTray</append>
<append key="org.freedesktop.Hal.Device.Storage.method_signatures" type="strlist">as</append>
<append key="org.freedesktop.Hal.Device.Storage.method_argnames" type="strlist">extra_options</append>
<append key="org.freedesktop.Hal.Device.Storage.method_execpaths" type="strlist">hal-storage-closetray</append>
</match>
</device>
</deviceinfo>
cat /etc/hal/fdi/policy/preferences.fdi:
Code:
<?xml version="1.0" encoding="UTF-8"?> <!-- -*- SGML -*- -->
<!--
Some examples how to use hal fdi files for system preferences
You can either uncomment the examples here or put them in a seperate .fdi
file.
-->
<deviceinfo version="0.2">
<!--
The following shows how to hint gnome-volume-manager and other programs
that honor the storage.automount_enabled_hint to not mount non-removable
media.
-->
<!--
<device>
<match key="storage.hotpluggable" bool="false">
<match key="storage.removable" bool="false">
<merge key="storage.automount_enabled_hint" type="bool">false</merge>
</match>
</match>
</device>
-->
</deviceinfo>
Cheers,
Mike.