Tập lệnh htdigest -c / path / to / file / $ user $ user $ password trong Bash


8

Tôi muốn có thể tạo tập lệnh với mật khẩu bằng mật khẩu $ biến.

htdigest -c /etc/apache2/pw/$user $user $password

Tại thời điểm nó yêu cầu tôi nhập mật khẩu thủ công; điều này sẽ không thể thực hiện được vì nó sẽ được thiết lập tự động bởi tập lệnh PHP. Ai đó có thể vui lòng chỉ cho tôi làm thế nào để kịch bản này? Hoặc một chức năng kịch bản tương đương?

Câu trả lời:


9

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 md5sumtừ lõi GNU và awkthay vì chỉ md5vì đó 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 sha512sumhoặc chương trình băm khác.

ví dụ: nếu user = foo , realm = barpassword = 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"

awesome: P có một số vấn đề khi tập tin chưa tồn tại, vì vậy tôi tạo tập tin trước khi chạy nó: o
Ông King

0

Kiểm tra hàm 'Proc_open' trong PHP http://fr.php.net/manual/en/feft.proc-open.php

Bạn có thể chạy htdigest với tùy chọn của mình, sau đó gửi vào đường ống mật khẩu mới.

Bạn có thể có thể tìm thấy / tạo một hàm PHP thực hiện công việc htdigest. Nên sử dụng Proc_open dễ dàng hơn ...


nó phức tạp hơn nhiều so với việc tạo một người dùng apache mới: p sử dụng php không phải là một lựa chọn
Ông King
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.