Ubuntu 20.04 Docker新增用户改密码遇认证令牌操作错误求助
Ubuntu 20.04 Dockerfile新增用户并设置密码失败的解决办法
遇到的Authentication token manipulation error通常和权限、工具依赖或执行身份有关,以下是排查和解决步骤:
核心排查点
- 必须以root身份执行密码设置操作:passwd/chpasswd命令需要root权限,不要在切换到普通用户后执行。
- 检查基础镜像是否缺少依赖:部分精简版Ubuntu镜像(如
ubuntu:20.04-minimal)可能未预装shadow-utils包,而chpasswd依赖该包。 - 确保/etc/shadow文件可写且权限正确:该文件需由
root:shadow拥有,权限为640,否则无法写入密码信息。
具体解决方案
1. 标准Dockerfile示例(适用于官方Ubuntu 20.04镜像)
FROM ubuntu:20.04 # 创建带家目录的普通用户 RUN useradd -m owner # 直接用chpasswd设置密码,root身份执行 RUN echo "owner:udev" | chpasswd # 可选:后续切换到普通用户 USER owner
2. 针对精简版镜像的补充步骤
如果使用的是minimal版镜像,先安装依赖包:
FROM ubuntu:20.04-minimal # 更新源并安装shadow-utils RUN apt-get update && apt-get install -y --no-install-recommends shadow-utils \ && rm -rf /var/lib/apt/lists/* # 创建用户并设置密码 RUN useradd -m owner && echo "owner:udev" | chpasswd
3. 修复/etc/shadow权限问题
如果文件权限异常,可在设置密码前添加权限修复命令:
RUN chown root:shadow /etc/shadow && chmod 640 /etc/shadow \ && echo "owner:udev" | chpasswd
4. 替代命令尝试
如果chpasswd仍失效,可改用passwd --stdin:
RUN echo "udev" | passwd --stdin owner
内容的提问来源于stack exchange,提问作者NewUser
相关产品推荐
相关产品推荐

