Xem /programming/645659/how-do-you-htdigest-400-user-accounts
Phương pháp đơn giản nhất, dựa trên một trong những gợi ý trong câu trả lời được bình chọn hàng đầu, có lẽ là:
digest="$( printf "%s:%s:%s" "$user" "$realm" "$password" |
md5sum | awk '{print $1}' )"
printf "%s:%s:%s\n" "$user" "$realm" "$digest" >> "/etc/apache2/pw/$user"
Tôi đã sử dụng md5sum
từ lõi GNU và awk
thay vì chỉ md5
vì đó là những gì tôi đã cài đặt trên hệ thống của mình và tôi không thể bận tâm tìm hiểu gói nào chứa /usr/bin/md5
- bạn cũng có thể sử dụng sha512sum
hoặc chương trình băm khác.
ví dụ: nếu user = foo , realm = bar và password = baz thì lệnh trên sẽ tạo ra:
foo:bar:5bf2a4095f681d1c674655a55af66c5a
htdigest không làm bất cứ điều gì kỳ diệu hoặc thậm chí bất thường - nó chỉ xuất ra người dùng, vương quốc và mật khẩu theo đúng định dạng ... như lệnh trên.
Xóa thông báo cho một người dùng nhất định: vương quốc thay vì chỉ thêm một, có thể dễ dàng thực hiện với sed.
sed -i -e "/^$user:$realm:/d" "/etc/apache2/pw/$user"
Và cập nhật / thay đổi thông báo cho người dùng: vương quốc cũng có thể được thực hiện với sed kết hợp với phương pháp ở trên để tạo dòng tiêu hóa. ví dụ
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"