Voir /programming/645659/how-do-you-htdigest-400-user-accounts
La méthode la plus simple, basée sur l'une des suggestions de la réponse la mieux notée, est probablement la suivante:
digest="$( printf "%s:%s:%s" "$user" "$realm" "$password" |
md5sum | awk '{print $1}' )"
printf "%s:%s:%s\n" "$user" "$realm" "$digest" >> "/etc/apache2/pw/$user"
J'ai utilisé md5sumde GNU coreutils et awkplutôt que simplement md5parce que c'est ce que j'ai installé sur mon système et je ne pouvais pas être dérangé de savoir quel paquet contient /usr/bin/md5- vous pouvez également utiliser sha512sumou un autre programme de hachage.
Par exemple, si user = foo , realm = bar et password = baz, la commande ci-dessus produira:
foo:bar:5bf2a4095f681d1c674655a55af66c5a
htdigest ne fait rien de magique ni même d'inhabituel - il affiche juste l'utilisateur, le domaine et le mot de passe au bon format ... comme le fait la commande ci-dessus.
Supprimer le résumé pour un utilisateur donné: le domaine au lieu d'en ajouter un, peut facilement être fait avec sed.
sed -i -e "/^$user:$realm:/d" "/etc/apache2/pw/$user"
Et la mise à jour / modification du résumé pour un utilisateur: le domaine peut également être fait avec sed en combinaison avec la méthode ci-dessus pour générer la ligne de résumé. par exemple
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"