Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将用户放置在具有用户名称空间的Docker容器中_Docker_Setuid_Linux Namespaces - Fatal编程技术网

如何将用户放置在具有用户名称空间的Docker容器中

如何将用户放置在具有用户名称空间的Docker容器中,docker,setuid,linux-namespaces,Docker,Setuid,Linux Namespaces,我正在运行dockerd 19.03.1,build 74b1e89,在专用ID范围内启用了用户名称空间 cat > /etc/sub{uid,gid} dockeruser:120000:10000 我需要在一个容器中从root用户切换到一个专用的用户,我将其创建为 ARG USERID=26551 ENV runUID=${USERID} ARG GROUPID=26551 ENV runGID=${GROUPID} ARG USERNAME='testuser' ENV run

我正在运行dockerd 19.03.1,build 74b1e89,在专用ID范围内启用了用户名称空间

 cat > /etc/sub{uid,gid}
 dockeruser:120000:10000
我需要在一个容器中从root用户切换到一个专用的用户,我将其创建为

ARG USERID=26551
ENV runUID=${USERID}
ARG GROUPID=26551
ENV runGID=${GROUPID}
ARG USERNAME='testuser'
ENV runUSER=${USERNAME}
ARG groupNAME='testgroup'
ENV runGROUP=${groupNAME}
RUN groupadd -g ${runGID}  ${runGROUP} && useradd -u ${runUID} -g ${runGID} -r ${runUSER}  
但是,我无法在容器上下文中切换到用户。su以及gosu的替代品失败与

[root@1d5594cd99a0 /]# su - testuser ls
su: cannot set groups: Invalid argument
根据,这可能是一个警告,并将影响所有依赖setuid或/和的二进制文件,例如su检查实际的二进制所有者


可以在容器上下文中的另一个用户下的Docker容器中运行命令/二进制文件,并为dockerd启用用户名称空间?

回答我的问题

我没有为用户命名空间定义足够的subuid/subgid

之前

/etc/subuid
/etc/subgid
  dockeruser:120000:10000
我在容器中创建了一个UID=26551的用户,其中26551不在[120000120000+10000]之内,因此切换到该用户失败

修复

将subuid和subgid范围扩展到[200000200000+100000],并实际包括UID

/etc/subuid
/etc/subgid
   dockeruser:200000:100000

回答我的问题

我没有为用户命名空间定义足够的subuid/subgid

之前

/etc/subuid
/etc/subgid
  dockeruser:120000:10000
我在容器中创建了一个UID=26551的用户,其中26551不在[120000120000+10000]之内,因此切换到该用户失败

修复

将subuid和subgid范围扩展到[200000200000+100000],并实际包括UID

/etc/subuid
/etc/subgid
   dockeruser:200000:100000