首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ubuntu中passwd -stdin的替代方案

Ubuntu中passwd -stdin的替代方案
EN

Ask Ubuntu用户
提问于 2019-02-05 11:27:18
回答 1查看 17.6K关注 0票数 13

我正在尝试将OpenVPN服务器从CentOS盒迁移到Ubuntu18.04盒。

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

但是,脚本使用下面的行来执行此操作:

代码语言:javascript
复制
echo ${VPN_PASSWORD} | passwd "${VPN_USER}" --stdin

在混乱了很长一段时间之后,我发现Ubuntu没有用于--stdinpasswd选项。

然而,我未能找到的是一种替代的方法。

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

我们生成一个密码:

代码语言:javascript
复制
VPN_PASSWORD=$(cat /dev/urandom | tr -dc 'A-Z0-9' | head -c 8)

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

代码语言:javascript
复制
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."

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

代码语言:javascript
复制
passwd: unrecognized option '--stdin'
Usage: passwd [options] [LOGIN]

我已经尝试了一天来找到并回答这个问题,并且尝试了很多很多事情,但是我认为我对Ubuntu知识的基本缺乏才是真正的问题。

EN

回答 1

Ask Ubuntu用户

回答已采纳

发布于 2019-02-05 11:57:22

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

代码语言:javascript
复制
echo "username:cleartext_password" | sudo chpasswd
票数 19
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1115795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档