about using privileged (KAuth) helpers: system dbus daemon on OS X?
Thiago Macieira
thiago at kde.org
Mon Sep 19 02:11:56 UTC 2016
On segunda-feira, 19 de setembro de 2016 02:30:22 PDT René J.V. Bertin wrote:
> On Sunday September 18 2016 16:57:48 Thiago Macieira wrote:
> > I have no idea what other kind of helper there may be. There's only "dbus-
> > daemon-launch-helper", which is setuid root, but setuids to the service's
> > user. The launched service only sees its own UID, never 0.
>
> There's too much room for confusion here: dbus-daemon-launch-helper the
> helper for DBus, and the process that implements the service which is (or
> can act as) a helper for the actual operation that is to be done.
Understood. But so we're all on the same page this is the dbus mailing list
and only dbus-daemon's helpers are helpers. The helper launches the service's
executable.
> > > So we have a user application (say, ksysguard) that calls DBus routines
> > > to
> > > launch a privileged helper process (ksysguardprocesslist_helper), a
> > > master
> >
> > That's not how it works. An application asks for a service, like
> > org.bluez. If there's a .service file that matches that, it specifies the
> > executable name along with the user ID to run under. Then dbus-daemon
> > runs dbus-daemon-launch- helper and that will setuid, clean the
> > environment, then exec the target executable.
>
> Not to contradict you, but that looks almost exactly like what I tried to
> describe in different words...
Ok.
> > No, that's the UID for dbus-daemon running as the system bus. The helper
> > runs as root, then setuid()s, as described above.
>
> From what I've seen the helper binary must be owned root and have the setuid
> bit set, so that when it launches it has uid=messagebus and euid=root.
Correct.
-rwsr-x--- 1 root messagebus 56856 set 17 08:56 /lib/dbus-1/dbus-daemon-
launch-helper
> > > If the privileged helper (slave) is supposed to connect to the system
> > > dbus
> > > when launched via dbus-daemon-helper-tool, how/why does it do so on
> > > Linux?
> >
> > The helper does not connect to the any bus. The executable that it
> > launches is expected to connect ot the system bus, as described above.
>
> Again, that's the helper I meant, not the dbus helper.
Ok, so the application connects to the system bus.
it does not connect to any session bus.
> Is it roughly correct to say that on Linux an application will try to
> connect on the system bus if it doesn't find a session bus address?
No.
Applications connect to the bus they were designed to connect to. If they
can't, they exit with error.
$ DBUS_SESSION_BUS_ADDRESS= DISPLAY= qdbus
Could not connect to D-Bus server: org.freedesktop.DBus.Error.NotSupported:
Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
--
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
Software Architect - Intel Open Source Technology Center
More information about the dbus
mailing list