如何将本地用户添加到我的 docker 容器中?

How do I add the local users to my docker container?

我想知道如何将服务器的本地用户添加到 docker 容器中。我不需要导入他们的文件,我只需要在 docker 容器中为我系统中的每个用户提供一个带有新主目录的 username/password/privileges。例如,假设我的 docker 容器包含以下用户:

主机系统:
admin:谁拥有 root 权限和对所有权限的读写权限
bob:一个普通的非 sudo 用户
joe:另一个普通的非 sudo 用户

那么 Docker 容器必须有用户:
admin:谁拥有 root 权限和对所有权限的读写权限
bob:一个普通的非 sudo 用户
joe:另一个普通的非 sudo 用户

Docker容器和系统都是运行linux,虽然系统是red hat,容器是ubuntu。

编辑:如果可能,我不想挂载 /etc/ 文件,因为这会造成双向安全漏洞,正如@caveman[=11= 所指出的那样]

您必须使用 -v 安装所有相关的 linux 文件,例如 /etc/passwd/etc/shadow/ect/group/etc/sudoers。虽然由于安全风险我不推荐这样做,但如果任何人在容器中获得 root 访问权限,他们可以在主机上添加用户或更改密码,因为他挂载是双向的。

文件列表并不详尽,例如,您还必须确保 shell 可执行文件存在于容器中。在测试这个时,我不得不从 /usr/bin/zsh/bin/bash 创建一个符号 link 例如,因为我的用户配置了 zsh shell 而 docker 图片。

如果您想使用这些用户与挂载的文件进行交互,您还必须确保禁用用户命名空间重新映射,或者指定您希望使用与主机相同的用户命名空间 --userns=host 标志。同样,不推荐,因为它是一项安全功能,因此请谨慎使用。

注意:完成所有这些操作后,您可以使用 su - {username} 切换到所有现有用户。 -u 选项不起作用,因为 docker 在挂载前检查 /etc/passwd 文件并给出错误。