webentwicklung-frage-antwort-db.com.de

Alternative zu passwd --stdin in Ubuntu

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.

4
shaneoh

Um das Kennwort eines Benutzers über die Shell festzulegen, verwenden Sie chpasswd :

echo "username:cleartext_password" | Sudo chpasswd
6
PerlDuck