[libvirt] [PATCH] qemu: Label uniqDir when probing capabilities

Daniel P. Berrangé berrange at redhat.com
Fri Apr 12 14:54:26 UTC 2019


On Fri, Apr 12, 2019 at 03:32:21PM +0200, Martin Kletzander wrote:
> This does not cause a problem in usual scenarios thanks to us allowing
> CAP_DAC_OVERRIDE for the qemu process, however in some scenarios this might be
> an issue because the directory is created with mkdtemp(3) which explicitly
> creates that with 0700 permissions and qemu running as non-root cannot access
> that.
> 
> The scenarios include:
>  - Builds without CAPNG
>  - Running libvirtd in a container [1]

s/in a container/in certain container configurations/  since I'm sceptical
this is todo with containers in general, as opposed to some configuration
choice of the container used by kubevirt.

>  - and possibly others.
> 
> [1] https://github.com/kubevirt/kubevirt/pull/2181#issuecomment-481840304
> 
> Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
> ---
>  src/qemu/qemu_process.c | 16 ++++++++++++++++
>  1 file changed, 16 insertions(+)

Reviewed-by: Daniel P. Berrangé <berrange at redhat.com>

> 
> diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
> index 47d8ca2ff163..2e2c4812fef7 100644
> --- a/src/qemu/qemu_process.c
> +++ b/src/qemu/qemu_process.c
> @@ -8447,6 +8447,19 @@ qemuProcessQMPNew(const char *binary,
>  }
>  
>  
> +static int
> +qemuProcessQEMULabelUniqPath(qemuProcessQMPPtr proc) {
> +    /* We cannot use the security driver here, but we should not need to. */
> +    if (chown(proc->uniqDir, proc->runUid, -1) < 0) {
> +        virReportSystemError(errno,
> +                             "Cannot chown uniq path: %s", proc->uniqDir);
> +        return -1;
> +    }
> +
> +    return 0;
> +}
> +
> +
>  static int
>  qemuProcessQMPInit(qemuProcessQMPPtr proc)
>  {
> @@ -8466,6 +8479,9 @@ qemuProcessQMPInit(qemuProcessQMPPtr proc)
>          goto cleanup;
>      }
>  
> +    if (qemuProcessQEMULabelUniqPath(proc) < 0)
> +        goto cleanup;
> +
>      if (virAsprintf(&proc->monpath, "%s/%s", proc->uniqDir,
>                      "qmp.monitor") < 0)
>          goto cleanup;
> -- 
> 2.21.0
> 
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|




More information about the libvir-list mailing list