Ich versuche, einen OpenVPN-Server von einer CentOS-Box auf eine Ubuntu 18.04-Box zu migrieren.
Es gibt ein Skript, das neue VPN-Benutzer erstellt. Ein Teil davon besteht darin, dass ein neues Kennwort für den Benutzer generiert und dieses dann als Linux-Kennwort für den neuen Benutzer übergeben wird (darüber hinaus befindet sich MFA, sodass dies nur ein Teil des Authentifizierungsprozesses ist).
Das Skript verwendet dazu jedoch die folgende Zeile:
echo ${VPN_PASSWORD} | passwd "${VPN_USER}" --stdin
Und nachdem ich lange herumgespielt habe, habe ich festgestellt, dass Ubuntu nicht die Option --stdin
Für passwd
hat.
Was ich jedoch nicht finden konnte, ist eine alternative Möglichkeit, dies zu tun.
Dies sind die relevanten Teile meines Skripts.
Wir generieren ein Passwort:
VPN_PASSWORD=$(cat /dev/urandom | tr -dc 'A-Z0-9' | head -c 8)
Wir fügen einen neuen Benutzer hinzu und versuchen, ihm dieses Passwort zuzuweisen:
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."
Der Benutzer wird erstellt, aber ich erhalte die folgende Fehlermeldung bezüglich des Kennworts:
passwd: unrecognized option '--stdin'
Usage: passwd [options] [LOGIN]
Ich habe einen Tag lang versucht, dies zu finden und darauf zu antworten, und viele, viele Dinge ausprobiert, aber ich denke, mein grundlegender Mangel an Ubuntu-Wissen ist das eigentliche Problem hier.
Um das Kennwort eines Benutzers über die Shell festzulegen, verwenden Sie chpasswd
:
echo "username:cleartext_password" | Sudo chpasswd