我有一个基于 debian
的简单 DockerfileFROM debian
USER 1001
我建造了
docker build -t no-root:1 .
我运行它
docker run --name test -it no-root:1
现在我有一个非root用户的shell
I have no name!@2ac786ca2265:/$
但是,我可以exec
从另一个外壳通过{p>
docker exec -it --user 0 test bash
然后我得到一个 root 外壳
root@e043edec4585:/#
并运行 root 命令...
是否可以在构建时从系统中删除 root 用户,以使docker exec -it --user 0 test bash
失败?
我尝试从root
和/etc/passwd
删除/etc/group
行。它没有帮助。我可以docker exec -it --user 0 test bash
进入。
所以-有办法吗?
答案 0 :(得分:0)
更改用户非常简单,例如下面的示例,这是我捏造另一个站点的示例。
RUN useradd -c 'Node.js user' -m -d /home/node -s /bin/bash node
RUN chown -R node.node /src
USER node
ENV HOME /home/node
我不建议尝试删除root用户。以上内容应阻止root在docker exec
上使用。
另一种方法是在根用户主目录中创建一个.profile
,该目录登录到另一个用户,但这只会影响运行-it {container} bash
的exec的使用(又名交互式外壳)