Альтернатива passwd - stdin в Ubuntu

Я пытаюсь переместить сервер 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 является реальной проблемой здесь.

4
задан 5 February 2019 в 14:27

1 ответ

Установить пароль пользователя от использования оболочки chpasswd:

echo "username:cleartext_password" | sudo chpasswd
6
ответ дан 1 December 2019 в 09:20

Другие вопросы по тегам:

Похожие вопросы: