[systemd-devel] proper use of /run/{user/<uid>, }/systemd/private sockets

aleivag aleivag at gmail.com
Tue Nov 14 03:26:11 UTC 2017


Hi all:

hope you guys are doing great!. So i have a few questions, hope this is the
best place for them.

I've been doing a lot of work with `sd-bus.h` (basically i've been trying
to bind it to other languages to then interact with systemd natively).

I've been reading the man pages/blog post/general docs, but mostly the src
code. and i stumble across
https://github.com/systemd/systemd/blob/master/src/shared/bus-util.c#L598-L605
and saw that you can connect to systemd using the sockets, for root would
be `/run/systemd/private`, and for users something like
`/run/user/<uid>/systemd/private` and this trigger lots of questions, that
i have not been able to answer, so here they are:

Question 1)

what would be the advantage of connecting through dbus instead of directly
through the socket?

the way i connect to systemd is with `sd_bus_open_system` but i can also do

```
sd_bus_new(&bus);
sd_bus_set_address(bus, "unix:path=/run/systemd/private");
sd_bus_start(bus);
```

why (or when) would one be better than the other?

question 2);

i also look that you can do the same with the user connections (and this is
mostly true when the --user flag is given, at least on systemd-run), and
you can connect to something like `/run/user/<uid>/systemd/private`, where
`/run/user/<uid>` is $XDG_RUNTIME_DIR, and i guess this is really the best
form to connect to systemd as a user, but is there any difference between
using that socket or doing `sd_bus_open_user`. ?

question 3)

systemd source code is pretty clear, really easy to learn from, also
sd-bus.h is incredible helpful and easy to use.

But the docs is good, don't get me wrong, but it could definitely use more
love. for instance the usage of the sockets
`/run/{user/uid,}/systemd/private`, is not documented anywhere that i could
find. is this intentional?, is this because this is a implementation detail
that may change in the future?. if so, what would be the correct way to
connect to systemd's socket?
i was particularly surprise that the sockets' path are hardcoded in the
code.

if this parts have not just gotten into the docs, i would be more than
happy to submit the PR for the docs.

Thank you guys!
Alvaro Leiva
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/systemd-devel/attachments/20171113/76ba9245/attachment-0001.html>


More information about the systemd-devel mailing list