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 md5sum
von GNU Coreutils verwendet und awk
nicht nur, md5
weil 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 sha512sum
anderes 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"