diff --git a/src/machine/machine-varlink.c b/src/machine/machine-varlink.c index dfc7020fc9..07a860f6c1 100644 --- a/src/machine/machine-varlink.c +++ b/src/machine/machine-varlink.c @@ -192,8 +192,10 @@ int vl_method_register(sd_varlink *link, sd_json_variant *parameters, sd_varlink if (r < 0) return r; - /* Ensure an unprivileged user cannot claim any process they don't control as their own machine */ - if (machine->uid != 0) { + /* In system scope, ensure an unprivileged user cannot claim any process they don't + * control as their own machine. In user scope the varlink socket is already + * protected by $XDG_RUNTIME_DIR permissions. */ + if (manager->runtime_scope != RUNTIME_SCOPE_USER && machine->uid != 0) { r = process_is_owned_by_uid(&machine->leader, machine->uid); if (r < 0) return r;