Vedi /programming/645659/how-do-you-htdigest-400-user-accounts
Il metodo più semplice, basato su uno dei suggerimenti nella risposta più votata, è probabilmente questo:
digest="$( printf "%s:%s:%s" "$user" "$realm" "$password" |
md5sum | awk '{print $1}' )"
printf "%s:%s:%s\n" "$user" "$realm" "$digest" >> "/etc/apache2/pw/$user"
Ho usato md5sum
da GNU coreutils e awk
piuttosto che solo md5
perché è quello che ho installato sul mio sistema e non potrei preoccuparmi di scoprire quale pacchetto contiene /usr/bin/md5
- potresti anche usare sha512sum
o altri programmi di hashing.
ad es. se user = foo , realm = bar e password = baz, il comando sopra produrrà:
foo:bar:5bf2a4095f681d1c674655a55af66c5a
htdigest non fa nulla di magico o addirittura insolito: emette semplicemente l'utente, il regno e la password nel formato giusto ... come fa il comando sopra.
Eliminare il digest per un determinato utente: il regno invece di aggiungerne uno, può essere facilmente eseguito con sed.
sed -i -e "/^$user:$realm:/d" "/etc/apache2/pw/$user"
E aggiornando / cambiando il digest per un utente: il regno può anche essere fatto con sed in combinazione con il metodo sopra per generare la linea di digest. per esempio
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"