解决的问题
面向无交互条件下直接在命令行创建Linux用户并且带可登录的密码的需求(例如:Docker build 镜像时创建用户和密码),可以使用useradd命令中的-p命令去添加,但需要注意的是该命令需要的参数是经过加密后的密码,直接输入明文会导致密码错误,官方对改参数的说明为encrypted password of the new account
。
加密的密码可以使用https://github.com/codehasbug/passwd-crypt项目提供的工具生成。
提示:以下是本篇文章正文内容,下面案例可供参考
一、加密工具安装
git clone https://github.com/codehasbug/passwd-crypt.git
cd passwd-crypt
gcc passwd-crypt.c -lcrypt -o passwd-crypt
sudo mv passwd-crypt /usr/bin
二、添加用户
例子:添加用户名为test,密码为test1234的用户
sudo useradd -p $(passwd-crypt test1234 0) test
也可以单独生成加密后的密码,第一个参数是明文密码,第二个是随机的salt,填0工具会自动生成,推荐直接填0用自动生成的就行,也可以选择自己输入特定的salt。
echo $(passwd-crypt test1234 0)
复制输出的加密密码后
在Dockerfile中RUN命令后写入useradd -p [复制的密码] 用户名
即可创建相应的用户和密码。