useradd 创建 root 拥有的主目录

useradd 创建 root 拥有的主目录

我正在使用以下命令创建用户和主目录,但由于某种原因,新创建的主目录归 root 所有:

useradd --user-group --create-home --base-dir /opt --shell /bin/bash testuser

我正在基于 eclipse-temurin:11.0.15_10-jre-focal(基于 Ubuntu 20.04)创建 Docker 映像。上面的命令包含在我的 Dockerfile 中,奇怪的是,当我在 Windows 机器上本地构建它时,主目录归新用户所有,但是当我使用 Azure、DevOps 管道构建它时,主目录归 root 所有。我不明白是什么原因导致 useradd 命令的行为不同。我发现帖子中存在与主目录位于 NFS 卷上相关的类似问题,但这里的情况并非如此:/opt 在容器内。

答案1

我在 Ubuntu 22.04 上使用 docker.io 时遇到了类似的问题,使用这个简单的 Dockerfile,

FROM ubuntu:22.04

RUN useradd -m -u 1000 -s /bin/bash xyz && ls -l /home
RUN ls -l /home

在命令之间,homedir的所有权xyz被设置为 root:root RUN。我在设置中找到了解决方案DOCKER_BUILDKIT=1

$ DOCKER_BUILDKIT=1 docker build .

也许您可以在 Azure 管道中定义或设置它。

答案2

我遇到了同样的问题,最后通过重新安装 Docker 解决了这个问题。我遵循指南完全卸载(除了不需要删除docker组)。然后按照常规 docker 指南重新安装。

答案3

也许问题就是上面提到的这里docker.io. 该错误已在版本20.10.25-0ubuntu1~20.04.2/中修复20.10.25-0ubuntu1~22.04.2

更新:

相关内容