如何在不知道密码加密形式的情况下添加用户?

如何在不知道密码加密形式的情况下添加用户?

我使用以下命令在 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

相关内容