From a178ffdfcd9d25886a6e563a0fbd9929852e85c4 Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Wed, 9 Oct 2024 12:10:44 +0200 Subject: [PATCH] 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. --- src/shared/bus-util.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/shared/bus-util.c b/src/shared/bus-util.c index 44ed617da8d..a196ba47f64 100644 --- a/src/shared/bus-util.c +++ b/src/shared/bus-util.c @@ -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(); } -- 2.47.3