[lxc-devel] [PATCH 1/2] busybox template: support for unprivileged containers

Serge Hallyn serge.hallyn at ubuntu.com
Wed Oct 22 14:16:26 UTC 2014


Quoting Bogdan Purcareata (bogdan.purcareata at freescale.com):
> Apply the changes found in templates/lxc-download to the busybox template as
> well. Change ownership of the config and fstab files to the unprivileged user,
> and the ownership of the rootfs to root in the new user namespace.
> 
> Eliminate the "unsupported for userns" flag.
> 
> Signed-off-by: Bogdan Purcareata <bogdan.purcareata at freescale.com>

Acked-by: Serge E. Hallyn <serge.hallyn at ubuntu.com>

> ---
>  templates/lxc-busybox.in | 36 ++++++++++++++++++++++++++----------
>  1 file changed, 26 insertions(+), 10 deletions(-)
> 
> diff --git a/templates/lxc-busybox.in b/templates/lxc-busybox.in
> index 246e743..ca2dd43 100644
> --- a/templates/lxc-busybox.in
> +++ b/templates/lxc-busybox.in
> @@ -20,15 +20,8 @@
>  # License along with this library; if not, write to the Free Software
>  # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
>  
> -# Detect use under userns (unsupported)
> -for arg in "$@"; do
> -    [ "$arg" = "--" ] && break
> -    if [ "$arg" = "--mapped-uid" -o "$arg" = "--mapped-gid" ]; then
> -        echo "This template can't be used for unprivileged containers." 1>&2
> -        echo "You may want to try the \"download\" template instead." 1>&2
> -        exit 1
> -    fi
> -done
> +LXC_MAPPED_UID=
> +LXC_MAPPED_GID=
>  
>  # Make sure the usual locations are in PATH
>  export PATH=$PATH:/usr/sbin:/usr/bin:/sbin:/bin
> @@ -310,6 +303,21 @@ EOF
>      echo "lxc.mount.auto = proc:mixed sys" >>$path/config
>  }
>  
> +remap_userns()
> +{
> +    path=$1
> +
> +    if [ -n "$LXC_MAPPED_UID" ] && [ "$LXC_MAPPED_UID" != "-1" ]; then
> +        chown $LXC_MAPPED_UID $path/config $path/fstab >/dev/null 2>&1
> +        chown -R root $path/rootfs >/dev/null 2>&1
> +    fi
> +
> +    if [ -n "$LXC_MAPPED_GID" ] && [ "$LXC_MAPPED_GID" != "-1" ]; then
> +        chgrp $LXC_MAPPED_GID $path/config $path/fstab >/dev/null 2>&1
> +        chgrp -R root $path/rootfs >/dev/null 2>&1
> +    fi
> +}
> +
>  usage()
>  {
>      cat <<EOF
> @@ -318,7 +326,7 @@ EOF
>      return 0
>  }
>  
> -options=$(getopt -o hp:n: -l help,rootfs:,path:,name: -- "$@")
> +options=$(getopt -o hp:n: -l help,rootfs:,path:,name:,mapped-uid:,mapped-gid: -- "$@")
>  if [ $? -ne 0 ]; then
>      usage $(basename $0)
>      exit 1
> @@ -332,6 +340,8 @@ do
>          -p|--path)      path=$2; shift 2;;
>          --rootfs)       rootfs=$2; shift 2;;
>          -n|--name)      name=$2; shift 2;;
> +        --mapped-uid)   LXC_MAPPED_UID=$2; shift 2;;
> +        --mapped-gid)   LXC_MAPPED_GID=$2; shift 2;;
>          --)             shift 1; break ;;
>          *)              break ;;
>      esac
> @@ -374,3 +384,9 @@ if [ $? -ne 0 ]; then
>      echo "failed to write configuration file"
>      exit 1
>  fi
> +
> +remap_userns $path
> +if [ $? -ne 0 ]; then
> +    echo "failed to remap files to user"
> +    exit 1
> +fi
> -- 
> 1.9.rc1
> 
> _______________________________________________
> lxc-devel mailing list
> lxc-devel at lists.linuxcontainers.org
> http://lists.linuxcontainers.org/listinfo/lxc-devel


More information about the lxc-devel mailing list