Missing user bus?

Havoc Pennington hp at redhat.com
Sat Sep 24 05:47:25 PDT 2005


Hi,

You can't actually make a per-user bus, because you can't open a socket
on a user's forehead ;-)

What you can try to do is a "per-home-directory" bus but it's a
minefield of nasty bugs and problems, because home directories have a
real pain-in-the-ass tendency to be on NFS, AFS, or Samba shares (for
example) and so you can't put sockets in there. If you use a TCP socket,
people have firewalls between their machines and it breaks left and
right.

You can make a "per-user-machine-pair" bus - "/tmp/dbus-username" - but
that's also a big nightmare of security headaches (see the ORBit
function that creates the ORBit per-user tmpdir) and it's also not
exactly per-user.

Anyway as John says there's a thread in the archives. But FWIW gconf was
done per-homedir and the current per-session bus is basically based on
my conclusion that I couldn't get per-homedir to work properly. Where
"work properly" means "I don't get stacks of bug reports"

I think two models are better:
 - the classic unix config file model; each session has a bus, 
   the per-session stuff writes out config files, last session 
   to write "wins" (you can be smart here and load a write from
   another session if you see it before you have other changes
   queued up)
 - the imap/ldap model; the sysadmin sets up a central server that
   the user accesses from all systems, avoiding network homedir
   and firewall issues; a "peer-to-peer" approach of one user
   machine talking to another doesn't work as well as this
   client-server approach

Havoc




More information about the dbus mailing list