Lihat /programming/645659/how-do-you-htdigest-400-user-accounts
Metode termudah, berdasarkan pada salah satu saran dalam jawaban yang dipilih, mungkin ini:
digest="$( printf "%s:%s:%s" "$user" "$realm" "$password" |
md5sum | awk '{print $1}' )"
printf "%s:%s:%s\n" "$user" "$realm" "$digest" >> "/etc/apache2/pw/$user"
Saya telah menggunakan md5sum
GNU coreutils dan awk
bukan hanya md5
karena itu yang telah saya instal pada sistem saya dan saya tidak dapat menemukan paket mana yang berisi /usr/bin/md5
- Anda juga dapat menggunakan sha512sum
atau program hashing lainnya.
mis. jika pengguna = foo , realm = bar , dan kata sandi = baz maka perintah di atas akan menghasilkan:
foo:bar:5bf2a4095f681d1c674655a55af66c5a
htdigest tidak melakukan sesuatu yang ajaib atau bahkan tidak biasa - itu hanya menampilkan pengguna, ranah, dan kata sandi dalam format yang tepat ... seperti yang dilakukan perintah di atas.
Menghapus intisari untuk pengguna yang diberikan: ranah alih-alih hanya menambahkan satu, dapat dengan mudah dilakukan dengan sed.
sed -i -e "/^$user:$realm:/d" "/etc/apache2/pw/$user"
Dan memperbarui / mengubah intisari untuk pengguna: ranah juga dapat dilakukan dengan kombinasi dengan metode di atas untuk menghasilkan garis intisari. misalnya
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"