You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 08:52:16