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é md5sum
de GNU coreutils et awk
plutôt que simplement md5
parce 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 sha512sum
ou 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"