From cc589cce9815cabb0bed6d0695ec3ff77beebd06 Mon Sep 17 00:00:00 2001 From: Anita Zhang Date: Thu, 13 May 2021 01:17:51 -0700 Subject: [PATCH] run: update checks to allow running with a user's bus systemd-run is documented to as being able to connect and run on a specific user bus with "--user --machine=lennart@.host" arguments. This PR updates some logic that prevented this from working. (cherry picked from commit cbdc29492097e24ef3320280bc2a8dedbce02d9a) --- src/run/run.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/run/run.c b/src/run/run.c index ac405d39d7..555f0584c8 100644 --- a/src/run/run.c +++ b/src/run/run.c @@ -576,13 +576,13 @@ static int parse_argv(int argc, char *argv[]) { } else if (!arg_unit || !with_trigger) return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Command line to execute required."); - if (arg_user && arg_transport != BUS_TRANSPORT_LOCAL) + if (arg_user && arg_transport == BUS_TRANSPORT_REMOTE) return log_error_errno(SYNTHETIC_ERRNO(EINVAL), - "Execution in user context is not supported on non-local systems."); + "Execution in user context is not supported on remote systems."); - if (arg_scope && arg_transport != BUS_TRANSPORT_LOCAL) + if (arg_scope && arg_transport == BUS_TRANSPORT_REMOTE) return log_error_errno(SYNTHETIC_ERRNO(EINVAL), - "Scope execution is not supported on non-local systems."); + "Scope execution is not supported on remote systems."); if (arg_scope && (arg_remain_after_exit || arg_service_type)) return log_error_errno(SYNTHETIC_ERRNO(EINVAL), @@ -1754,7 +1754,7 @@ static int run(int argc, char* argv[]) { /* If --wait is used connect via the bus, unconditionally, as ref/unref is not supported via the limited direct * connection */ - if (arg_wait || arg_stdio != ARG_STDIO_NONE) + if (arg_wait || arg_stdio != ARG_STDIO_NONE || (arg_user && arg_transport != BUS_TRANSPORT_LOCAL)) r = bus_connect_transport(arg_transport, arg_host, arg_user, &bus); else r = bus_connect_transport_systemd(arg_transport, arg_host, arg_user, &bus); -- 2.25.1