在 Docker 容器中添加具有 sudo 权限的新用户

6

我正在尝试构建一个Docker文件,其中一个要求是创建一个具有sudo权限的用户。

以下是bash脚本:

# quietly add a user without password
adduser --quiet --disabled-password --shell /bin/bash --home /home/newuser --gecos "testuser" newuser
# set password
echo "testuser:testuser" | sudo chpasswd

以及Docker Compose文件。

FROM ros
RUN apt-get update 
RUN apt-get install -y sudo
ADD run.sh /usr/local/bin/run.sh
RUN chmod +x /usr/local/bin/run.sh
CMD ["/usr/local/bin/run.sh"]

当我运行这个构建时,出现了如下错误。
chpasswd: (user testuser) pam_chauthtok() failed, error:
Authentication token manipulation error
chpasswd: (line 1, user testuser) password not changed
1个回答

8

我认为你误解了要求。创建具有sudo权限的用户与使用sudo命令创建用户是不同的。

根据发行版,如果用户属于wheelsudo组(Ubuntu是由ros使用的基本映像),则用户可以运行sudo

我强烈建议您使用useradd命令而不是adduser。后者在Debian和RedHat基础的发行版中不同,而前者跨Linux发行版甚至*BSD都是相同的,如果不使用长选项的话。此外,前者允许您在命令行中指定附加组(-G选项)。

useradd -m -s /bin/bash -G sudo newuser

如果您使用-p选项,则还可以以加密形式提供密码(手册中的术语应该是哈希形式),无需稍后使用chpasswd。请使用mkpasswd -m sha-512的输出。(mkpasswd命令存在于whois软件包中)。如果您将使用chpass,请使用-e选项以加密形式提供密码。永远不要使用明文密码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接