Siehe /programming/645659/how-do-you-htdigest-400-user-accounts
Die einfachste Methode, basierend auf einem der Vorschläge in der am besten bewerteten Antwort, ist wahrscheinlich folgende:
digest="$( printf "%s:%s:%s" "$user" "$realm" "$password" |
md5sum | awk '{print $1}' )"
printf "%s:%s:%s\n" "$user" "$realm" "$digest" >> "/etc/apache2/pw/$user"
Ich habe md5sumvon GNU Coreutils verwendet und awknicht nur, md5weil es das ist, was ich auf meinem System installiert habe, und ich konnte nicht herausfinden, welches Paket enthält /usr/bin/md5- Sie könnten auch ein sha512sumanderes Hashing-Programm verwenden.
zB wenn user = foo , Realm = bar und password = baz, erzeugt der obige Befehl:
foo:bar:5bf2a4095f681d1c674655a55af66c5a
htdigest macht nichts Magisches oder Ungewöhnliches - es gibt nur den Benutzer, den Bereich und das Passwort im richtigen Format aus ... wie der obige Befehl.
Das Löschen des Digests für einen bestimmten Benutzer: Realm kann einfach mit sed durchgeführt werden, anstatt nur einen hinzuzufügen.
sed -i -e "/^$user:$realm:/d" "/etc/apache2/pw/$user"
Das Aktualisieren / Ändern des Digests für einen Benutzer: Realm kann auch mit sed in Kombination mit der oben beschriebenen Methode durchgeführt werden, um die Digest-Zeile zu generieren. z.B
digest="$( printf "%s:%s:%s" "$user" "$realm" "$new_password" |
md5sum | awk '{print $1}' )"
sed -i -e "/^$user:$realm:/ c$user:$realm:$digest" "/etc/apache2/pw/$user"