mirror of
https://github.com/systemd/systemd.git
synced 2025-02-09 13:57:42 +03:00
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.
This commit is contained in:
parent
a2031de849
commit
cbdc294920
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user