[libvirt] [PATCH v4 02/10] LXC: enable user namespace only when user set the uidmap

Daniel P. Berrange berrange at redhat.com
Fri Jun 7 11:39:35 UTC 2013


On Fri, Jun 07, 2013 at 03:12:19PM +0800, Gao feng wrote:
> User namespace will be enabled only when the idmap exist
> in configuration.
> 
> If you want disable user namespace,just remove these
> elements from XML.
> 
> If kernel doesn't support user namespace and idmap exist
> in configuration file, libvirt lxc will start failed and
> return "Kernel doesn't support user namespace" message.
> 
> Signed-off-by: Gao feng <gaofeng at cn.fujitsu.com>
> ---
>  src/lxc/lxc_container.c | 24 ++++++++++++++----------
>  1 file changed, 14 insertions(+), 10 deletions(-)
> 
> diff --git a/src/lxc/lxc_container.c b/src/lxc/lxc_container.c
> index 181f6c8..5d4da73 100644
> --- a/src/lxc/lxc_container.c
> +++ b/src/lxc/lxc_container.c
> @@ -2018,14 +2018,12 @@ cleanup:
>  
>  static int userns_supported(void)
>  {
> -#if 1
> -    /*
> -     * put off using userns until uid mapping is implemented
> -     */
> -    return 0;
> -#else
>      return lxcContainerAvailable(LXC_CONTAINER_FEATURE_USER) == 0;
> -#endif
> +}
> +
> +static int userns_required(virDomainDefPtr def)
> +{
> +    return def->idmap.uidmap && def->idmap.gidmap;
>  }
>  
>  virArch lxcContainerGetAlt32bitArch(virArch arch)
> @@ -2105,9 +2103,15 @@ int lxcContainerStart(virDomainDefPtr def,
>  
>      cflags = CLONE_NEWPID|CLONE_NEWNS|CLONE_NEWUTS|CLONE_NEWIPC|SIGCHLD;
>  
> -    if (userns_supported()) {
> -        VIR_DEBUG("Enable user namespaces");
> -        cflags |= CLONE_NEWUSER;
> +    if (userns_required(def)) {
> +        if (userns_supported()) {
> +            VIR_DEBUG("Enable user namespace");
> +            cflags |= CLONE_NEWUSER;
> +        } else {
> +            virReportSystemError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> +                                 _("Kernel doesn't support user namespace"));
> +            return -1;
> +        }
>      }

ACK

Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list