useradd 创建 root 拥有的主目录

bac*_*m23 5 useradd docker

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

useradd --user-group --create-home --base-dir /opt --shell /bin/bash testuser
Run Code Online (Sandbox Code Playgroud)

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

jam*_*nan 2

我在 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
Run Code Online (Sandbox Code Playgroud)

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

$ DOCKER_BUILDKIT=1 docker build .
Run Code Online (Sandbox Code Playgroud)

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


Kev*_*cke 0

我遇到了同样的问题,最终通过干净地重新安装 Docker 来修复它。我按照指南完全卸载(除了不需要删除 docker 组)。然后按照常规的docker指南重新安装。