提交 00d17254 编写于 作者: D Daniel P. Berrangé

remote: refactor how unprivileged user session connection is identified

Currently the VIR_DRV_OPEN_REMOTE_USER flag is only set when we identify
that we're connecting to a local libvirtd daemon. We would like to be
able to set that even if connecting to a remote libvirtd daemon. This
entails refactoring the conditional check.

One subtle change is that the VIR_DRV_OPEN_REMOTE_USER is now set when
the test+XXX://  URI is used, even if a servername is present. This has
no effect in this patch, but will later.
Signed-off-by: NDaniel P. Berrangé <berrange@redhat.com>
上级 5a148ce8
......@@ -1345,26 +1345,36 @@ remoteConnectOpen(virConnectPtr conn,
rflags |= VIR_DRV_OPEN_REMOTE_RO;
/*
* If no servername is given, and no +XXX
* transport is listed, or transport is unix,
* and path is /session, and uid is unprivileged
* then auto-spawn a daemon.
* User session daemon is used for
*
* - Any URI with /session suffix
* - Test driver, if a protocol is given
*
* provided we are running non-root
*/
if (conn->uri &&
!conn->uri->server &&
conn->uri->path &&
conn->uri->scheme &&
(transport == NULL || STREQ(transport, "unix")) &&
(STREQ(conn->uri->path, "/session") ||
STRPREFIX(conn->uri->scheme, "test+")) &&
geteuid() > 0) {
VIR_DEBUG("Auto-spawn user daemon instance");
VIR_DEBUG("User session daemon required");
rflags |= VIR_DRV_OPEN_REMOTE_USER;
/*
* Furthermore if no servername is given, and no +XXX
* transport is listed, or transport is unix,
* and uid is unprivileged then auto-spawn a daemon.
*/
if (!virIsSUID() &&
!conn->uri->server &&
(transport == NULL || STREQ(transport, "unix")) &&
(!autostart ||
STRNEQ(autostart, "0")))
STRNEQ(autostart, "0"))) {
VIR_DEBUG("Try daemon autostart");
rflags |= VIR_DRV_OPEN_REMOTE_AUTOSTART;
}
}
/*
* If URI is NULL, then do a UNIX connection possibly auto-spawning
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册