Docker CMD无法添加新用户,权限被拒绝

Docker CMD无法添加新用户,权限被拒绝,docker,ubuntu,Docker,Ubuntu,我有一个docker图像,在最后启动此脚本: # Start the server CMD [ "bash", "/app/start.sh"] 然后我的脚本start.sh # Create ssh user useradd -m -d /home/${SSH_MASTER_USER} -G ssh ${SSH_MASTER_USER} -s /bin/bash echo "${SSH_MASTER_USER}:${SSH_MASTER

我有一个docker图像,在最后启动此脚本:


# Start the server
CMD [ "bash", "/app/start.sh"]

然后我的脚本
start.sh


# Create ssh user
useradd -m -d /home/${SSH_MASTER_USER} -G ssh ${SSH_MASTER_USER} -s /bin/bash
echo "${SSH_MASTER_USER}:${SSH_MASTER_PASS}" | chpasswd
echo 'PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin"' >> /home/${SSH_MASTER_USER}/.profile

我一直在犯这样的错误:


useradd: Permission denied.
useradd: cannot lock /etc/passwd; try again later.

如果与sudo一起运行,则会显示:

sudo: no tty present and no askpass program specified


试图这样修复它:


sudo -S useradd -m -d /home/${SSH_MASTER_USER} -G ssh ${SSH_MASTER_USER} -s /bin/bash

RUN adduser --disabled-password --gecos "" appuser
RUN apt-get update
RUN apt-get install -y sudo
RUN echo "appuser ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/appuser && chmod 0440 /etc/sudoers.d/appuser

但现在要求我输入密码,但没有密码…

我的基本映像正在使用root。 因此,我添加了
appuser
,并像这样安装sudo:


sudo -S useradd -m -d /home/${SSH_MASTER_USER} -G ssh ${SSH_MASTER_USER} -s /bin/bash

RUN adduser --disabled-password --gecos "" appuser
RUN apt-get update
RUN apt-get install -y sudo
RUN echo "appuser ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/appuser && chmod 0440 /etc/sudoers.d/appuser
稍后,当您准备将新用户用于所有命令时:

USER appuser:appuser

也就是说,现在默认情况下将成为用户的
appuser
可以使用
sudo
,而无需密码。

我通过将现有用户添加到sudo组解决了以下问题:


RUN echo "myUser ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/docker && chmod 0440 /etc/sudoers.d/docker


然后:


sudo-S useradd-m-d/home/${SSH\u MASTER\u USER}-G SSH${SSH\u MASTER\u USER}-S/bin/bash

无密码工作

谢谢提示。我没有创建新用户,而是将现有用户添加到sudo组。由于某种原因,
CMD
脚本正在与该用户一起运行