Я пытаюсь переместить сервер 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 является реальной проблемой здесь.
Установить пароль пользователя от использования оболочки chpasswd
:
echo "username:cleartext_password" | sudo chpasswd