bus-util: Move geteuid() check out of bus_connect_system_systemd()

Let's move this check to bus_connect_transport_systemd() so that
bus_connect_system_systemd() will only ever connect to the manager
private manager bus instance and fail otherwise.
This commit is contained in:
Daan De Meyer
2024-10-11 11:35:02 +02:00
parent a339495b1d
commit a178ffdfcd
+6 -7
View File
@@ -229,12 +229,6 @@ int bus_connect_system_systemd(sd_bus **ret_bus) {
assert(ret_bus);
if (geteuid() != 0)
return sd_bus_default_system(ret_bus);
/* If we are root then let's talk directly to the system
* instance, instead of going via the bus */
r = sd_bus_new(&bus);
if (r < 0)
return r;
@@ -521,8 +515,13 @@ int bus_connect_transport_systemd(
/* Print a friendly message when the local system is actually not running systemd as PID 1. */
return log_error_errno(SYNTHETIC_ERRNO(EHOSTDOWN),
"System has not been booted with systemd as init system (PID 1). Can't operate.");
return bus_connect_system_systemd(ret_bus);
if (geteuid() == 0)
/* If we are root then let's talk directly to the system
* instance, instead of going via the bus. */
return bus_connect_system_systemd(ret_bus);
return sd_bus_default_system(ret_bus);
default:
assert_not_reached();
}