Ubuntu 中 passwd --stdin 的替代方案

Ubuntu 中 passwd --stdin 的替代方案

我正在尝试将 OpenVPN 服务器从 CentOS 机器迁移到 Ubuntu 18.04 机器。

有一个脚本可以创建新的 VPN 用户。它的一部分功能是为用户生成新密码,然后将其作为新用户的 Linux 密码传递(此外还有 MFA,因此这只是身份验证过程的一部分)。

但是脚本使用以下行来执行此操作:

echo ${VPN_PASSWORD} | passwd "${VPN_USER}" --stdin

经过长时间的折腾之后,我发现 Ubuntu 没有该--stdin选项passwd

然而,我还没能找到实现此目的的替代方法。

这些是我的脚本的相关部分。

我们生成一个密码:

VPN_PASSWORD=$(cat /dev/urandom | tr -dc 'A-Z0-9' | head -c 8)

我们添加一个新用户并尝试为其分配此密码:

echo "Adding Unix user ${VPN_USER}"
useradd -G vpnusers -m -s /sbin/nologin $VPN_USER
if [ "$?" != 0 ]
then
    echo "Could not create user. (Are you sudo?!)"
    exit 1
fi

echo ${VPN_PASSWORD} | passwd "${VPN_USER}" --stdin
echo "User created."

正在创建用户,但我收到有关密码的错误:

passwd: unrecognized option '--stdin'
Usage: passwd [options] [LOGIN]

我尝试了一天来寻找和回答这个问题,并尝试了很多很多方法,但我认为我对 Ubuntu 知识的缺乏才是真正的问题。

答案1

要从 shell 设置用户密码,请使用chpasswd

echo "username:cleartext_password" | sudo chpasswd

相关内容