我使用以下命令在 Linux 机器上创建用户:
useradd -d /home/dummy -g idiots -m -p 12345689 dummy
用户和主目录都已创建。
问题是我无法使用此帐户登录系统,因为需要-p
返回的加密密码crypto
。
问题:我想通过 bash 脚本创建一个用户,但我不知道加密的密码crypto
。我该怎么做才能通过脚本自动创建此用户并解决密码问题?
答案1
您可以使用 openssl 生成预加密的密码字符串,以便与 useradd 的 -p 选项一起使用
echo "P4sSw0rD" | openssl passwd -1 -stdin
$1$Jxmpx1Da$Y8MzBctIyDW8/7pFPbNWD1
表示-1
生成 MD5 密码哈希值。盐值会自动生成。
然后您可以使用
useradd -d /home/dummy -g idiots -m -p $(echo "P4sSw0rD" | openssl passwd -1 -stdin) dummy
添加用户。要以交互方式隐藏密码
useradd -d /home/dummy -g idiots -m -p $(read -sp Password: pw ; echo $pw | openssl passwd -1 -stdin) dummy
答案2
显然, 您可以使用
echo "password" | passwd dummy --stdin
我从来没有尝试过这个。
或者,你可以把用户的公钥放进去/home/dummy/.ssh/authorized_keys
,然后完全忘掉密码。从安全角度来说,这是最好的选择。
答案3
我是这样做的:
# cat user-pw_list
john:p455W0rD
geany:p455W0rD
# cat CreateUsers.sh
#!/bin/bash
#
# filename: CreateUsers.sh
# usage: cat "User:passwd" | $0
#
set -e
# set -x
while read ; do
USER=${REPLY%%:*}
PWD=${REPLY##*:}
# alternative for random passwd, where $RANDOM is a bash function
#PWD=${REPLY%%:*}$RANDOM$RANDOM
echo -e "adding User $USER "
# for disabled users: /usr/sbin/nologin, otherwise /bin/bash
/usr/sbin/useradd -c automaticUser -m -k/dev/null -s /usr/sbin/nologin $USER
echo "$USER:$PWD" | chpasswd --md5 $USER
## also add user to samba:
#echo -e "$PWD\n$PWD" | pdbedit -t -u $USER
done
答案4
既然你要使用 bash 脚本,那么这个老newusers
命令也许对你有帮助?它从格式如下的文本文件中读取输入:
pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_shell
该文件中的密码应为明文。您可以在输入文件中列出任意数量的用户。
更多信息请参阅man newusers
。