We set the variable in the unit file for --user, so this check is
always true.
if (m->kdbus_fd >= 0)
return 0;
if (m->kdbus_fd >= 0)
return 0;
- /* If there's already a bus address set, don't set up kdbus */
- if (m->running_as == SYSTEMD_USER && getenv("DBUS_SESSION_BUS_ADDRESS"))
- return 0;
-
m->kdbus_fd = bus_kernel_create_bus(m->running_as == SYSTEMD_SYSTEM ? "system" : "user", m->running_as == SYSTEMD_SYSTEM, &p);
if (m->kdbus_fd < 0) {
log_debug("Failed to set up kdbus: %s", strerror(-m->kdbus_fd));
m->kdbus_fd = bus_kernel_create_bus(m->running_as == SYSTEMD_SYSTEM ? "system" : "user", m->running_as == SYSTEMD_SYSTEM, &p);
if (m->kdbus_fd < 0) {
log_debug("Failed to set up kdbus: %s", strerror(-m->kdbus_fd));
* of that directory is not visible to non-root users. This is
* necessary to ensure that users cannot get access to busses
* of virtualized users when no UID namespacing is used. */
* of that directory is not visible to non-root users. This is
* necessary to ensure that users cannot get access to busses
* of virtualized users when no UID namespacing is used. */
- mkdir_p_label("/dev/kdbus/ns", 0700);
+ if (m->running_as == SYSTEMD_SYSTEM)
+ mkdir_p_label("/dev/kdbus/ns", 0700);