about using privileged (KAuth) helpers: system dbus daemon on OS X?
René J.V. Bertin
rjvbertin at gmail.com
Mon Sep 19 00:30:22 UTC 2016
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.
> > 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...
>
> 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.
> > 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.
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?
Thanks,
R
More information about the dbus
mailing list