使用sudo权限在docker容器中添加新用户

我试图build立一个docker文件,其中一个要求是用sudo权限创build一个用户。

这里是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 

和泊坞窗撰写文件。

 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 

我认为你错误地解释了这些要求。 使用sudo权限创build用户与使用sudo命令创build用户不同。

根据分布情况,如果用户属于wheelsudo组,则用户可以运行sudo (后者就是使用ros的基本映像Ubuntu)。

我强烈build议您使用useradd命令而不是adduser 。 后者在基于Debian和RedHat的发行版中是不同的,不同于前者,在Linux发行版中是相同的,如果不使用long选项,甚至是* BSD。 另外,后者允许您在命令行中指定补充组( -G选项)。

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

如果使用-p选项,则还可以以encryptionforms提供密码(手册页中的术语应该是散列forms ),而不需要稍后使用chpasswd 。 使用mkpasswd -m sha-512的输出。 ( mkpasswd命令存在于whois软件包中)。 如果您打算使用chpass ,请使用-e选项以encryptionforms提供密码。 永远不要使用明文。