Docker CMD无法添加新用户,权限被拒绝
我有一个docker图像,在最后启动此脚本: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
# 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
脚本正在与该用户一起运行