No subject


Tue Oct 13 08:14:20 PDT 2009


My 1st goal is to get all devices (known and unknown) automounted.
Then, to let a user spawn any action for any block device event
(added, removed, mounted, unmounted)

1) I have set all the rules for my known hardware in the fstab
so users have the right to mount it.

2) Here the devkit-disks-trigger (attachment) plays the role of ivman,
nothing root happens : each user can set a configuration file and launch
devkit-disks-trigger dbus listener at session startup so devices can be
automounted (and eg, a terminal spawn in the mountpoint).

3) Then for the unknown devices, I will use the udev rule (I saw somewhere in the
/usr/share/udev) which create a mount point (the mount point dir name
can be numbered or can be the label of the partition, ...).
It system-wide but then the users can also be warned about a new device mounted
by devkit-disks-trigger as in 2).

In my case, I don't really mind about mountpoint path, I just want the ability
for a user to go there quickly so I want to have the freedom to launch the terminal
in the mountpoint, set a variable, create a symlink, do a rsync, ...

I'm quite sure you may find it useful with a config like :
[my_device]
IdLabel=mypictures
# choice 1 : it's configured in fstab to let a user mount it
DeviceAdded=mount %device_file my stuff like I want

DeviceMountPaths=/mnt/pictures #or /home/user/media/mypictures
DeviceMounted=mirage /mnt/pictures

# choice 2 : the mount part is done by root, or udev
# so we only do stuff at post-mount time
DeviceMounted=mirage %device_mount_paths

(but ! the %device_mount_paths doesn't works (currently) as
DeviceMounted event is analysed if we have specified WHICH
mount point to check, we have to know it before)

I'm in the process to correct that but it means the current version
doesn't permit the following workaround :
(have_common_mount_path test even if DeviceMountPaths is NULL)
[nonworkaround]
# triggered whenever a mount happens
DeviceMounted=/tmp/myhelper.sh

(Look at the sample configuration file in the archive)

The main limitations of the attached program are currently :
- the unability to get the props from the mount_paths in the callback
of mount-{added,removed} and the fact that the mountmonitor doesn't give an object_path.
- my unability to integrate the code in the devkit-disks source directory
which makes the current code bundle some struct already defined elsewhere.
(many hours attempting to understand why "make" can't stop throwing bunch
of "already defined", "not defined" errors and playing with #ifndef GUARD_HEADER bored
me far enough)
===> tools/devkit-disks.c and src/devkit-disks-daemon.c should probably define some of their
struct in a common .h (what about lib/device-property.h ?)
(particularly: DeviceProperties, collect_props, device_properties_get, device_properties_free)

I didn't think about polkit and multiseat (I need per-user udev rules which in fact
a per-user devkit-disks --monitor-and-trigger), as shared devices, imply a root definition
of groups and behavior (system udev or polkit) and I don't want to deal with that now :)

Let me know if you have any advice, criticisms, ...

Raph

On Tue, Oct 13, 2009 at 07:56:47AM +0200, Stef Bon wrote:
> Hello,
> 
> your idea of per-user udev subset is great. I've been working on a
> construction
> which makes access to network- and hardware resources available in a
> directory
> in your homedirectory and not a foreign place like /mnt or /media.
> 
> The latest construction is using the automounter and a fuse module I
> call fuse-workspace
> 
> The latest mirrors a special directory under the directory where
> it's mounted.
> Via configuration it's possible to make symbolic links look like
> normal directories.
> In this case for example a symbolic link to the hardeware in /media
> (mounted by HAL)
> or in /mnt (by the automounter) is presented as directory, making it
> look like
> hardware is direct available in the users homedirectory.
> 
> This construction works very well, but has problems with HAL and
> thus my desktop KDE.
> HAL uses a global setting for the mountpoint, which is thus the same
> for all user.
> If I want that the user logging in, working with KDE to work with
> the directory in
> the homedirectory where the hardware device is also available, I
> have to alter the mountpoint
> parameter in the HAL settings for this device. But then this is
> changed for all the users working
> on this machine (and with multiseat this is possible), and you don't
> want that!
> 
> The only sollution is per-user rules.
> 
> I do not understand your goal exactly, and the reason that you want
> per-user rules is maybe
> another I want it.
> 
> 
> Stef Bon


--J2SCkAp4GZ/dPZZf
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="devkit-disks-trigger.tar.gz"
Content-Transfer-Encoding: base64

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
v0JB72EAGAEA

--J2SCkAp4GZ/dPZZf--


More information about the devkit-devel mailing list