username=$1
pass=$2
shift
shift
fname=$*
username=$(useradd -m -s /bin/bash -c "$fname" $username)
newpass=$(openssl passwd -1 -salt -stdin $pass)
所以这有效,只是当我尝试登录时,我无法登录。对于我的一生,我不明白出了什么问题。我尝试使用以下语法:
newPass=($username:$pass | chpasswd -c SHA512)
答案1
如果您确实必须这样做,这里有一个可行的脚本:
#!/bin/bash
#
username="$1"
pass="$2"
shift 2
fname="$*"
useradd -m -s /bin/bash -c "$fname" "$username"
echo "$username:$pass" | chpasswd
在这里,明文密码被命令$pass
加密。默认情况下,它使用 PAM 来执行加密,因此它将“最适合”目标系统。/etc/shadow
chpasswd