[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 21/26] libxl: Rationalise calculation of user to run qemu as
If the config specifies a user we use that. Otherwise: When we are not restricting qemu, there is very little point running it as a different user than root. Indeed, previously, creating the "magic" users would cause qemu to become slightly dysfunctional (for example, you can't insert a cd that the qemu user can't read). So, in that case, default to running it as root. Conversely, if restriction is requested, we must insist on running qemu as a non-root user. Sadly the admin is still required to create 2^16-epsilon users! Signed-off-by: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx> Acked-by: Wei Liu <wei.liu2@xxxxxxxxxx> --- docs/man/xl.cfg.pod.5.in | 2 -- tools/libxl/libxl_dm.c | 13 ++++++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/docs/man/xl.cfg.pod.5.in b/docs/man/xl.cfg.pod.5.in index abc2315..ee84511 100644 --- a/docs/man/xl.cfg.pod.5.in +++ b/docs/man/xl.cfg.pod.5.in @@ -2250,8 +2250,6 @@ or B<xen-qemuuser-shared> (in which case different guests will not be protected against each other). -And if you do not create the user, -the restriction request will be silently ineffective! =item diff --git a/tools/libxl/libxl_dm.c b/tools/libxl/libxl_dm.c index 60c0356..00718c5 100644 --- a/tools/libxl/libxl_dm.c +++ b/tools/libxl/libxl_dm.c @@ -1635,6 +1635,12 @@ static int libxl__build_device_model_args_new(libxl__gc *gc, goto end_search; } + if (!libxl_defbool_val(b_info->u.hvm.dm_restrict)) { + LOGD(DEBUG, guest_domid, + "dm_restrict disabled, starting QEMU as root"); + goto end_search; + } + user = GCSPRINTF("%s%d", LIBXL_QEMU_USER_BASE, guest_domid); ret = libxl__dm_runas_helper(gc, user); if (ret < 0) @@ -1652,9 +1658,10 @@ static int libxl__build_device_model_args_new(libxl__gc *gc, goto end_search; } - user = NULL; - LOGD(DEBUG, guest_domid, "Could not find user %s, starting QEMU as root", - LIBXL_QEMU_USER_SHARED); + LOGD(ERROR, guest_domid, + "Could not find user %s%d or %s, cannot restrict", + LIBXL_QEMU_USER_BASE, guest_domid, LIBXL_QEMU_USER_SHARED); + return ERROR_INVAL; end_search: if (user != NULL && strcmp(user, "root")) { -- 2.1.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |