Bash에서 htdigest -c /path/to/file/$user $user $password 스크립트 작성

Bash에서 htdigest -c /path/to/file/$user $user $password 스크립트 작성

$password 변수에 비밀번호가 포함된 스크립트를 작성하고 싶습니다.

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

현재는 비밀번호를 수동으로 입력해야 합니다. 비밀번호는 PHP 스크립트에 의해 자동으로 설정되므로 불가능합니다. 누군가 이것을 스크립트하는 방법을 말해 줄 수 있습니까? 아니면 동등한 스크립트 가능한 기능인가요?

답변1

바라보다https://stackoverflow.com/questions/645659/how-do-you-htdigest-400-user-accounts

가장 많은 투표를 받은 답변의 제안 중 하나를 기반으로 가장 간단한 방법은 다음과 같습니다.

digest="$( printf "%s:%s:%s" "$user" "$realm" "$password" | 
           md5sum | awk '{print $1}' )"

printf "%s:%s:%s\n" "$user" "$realm" "$digest" >> "/etc/apache2/pw/$user"

나는 md5sumGNU coreutils를 사용하고 있는데, 그것이 내 시스템에 설치되어 있고 어떤 패키지가 포함되어 있는지 찾기가 너무 게으른 때문 awk이 아닙니다 . 또는 다른 해싱 프로그램을 사용할 수도 있습니다 .md5/usr/bin/md5sha512sum

예를 들어사용자=foo,영역=바, 그리고비밀번호=baz그러면 위 명령은 다음을 생성합니다.

foo:bar:5bf2a4095f681d1c674655a55af66c5a

htdigest는 마술적이거나 특이한 작업을 수행하지 않습니다. 위의 명령과 마찬가지로 사용자, 영역 및 암호를 올바른 형식으로 출력합니다.

sed를 사용하면 주어진 user:realm에 대한 다이제스트를 추가하는 대신 쉽게 제거할 수 있습니다.

sed -i -e "/^$user:$realm:/d" "/etc/apache2/pw/$user"

user:realm의 요약 업데이트/변경은 요약 줄을 생성하기 위해 위의 방법과 함께 sed를 사용하여 수행할 수도 있습니다. 예를 들어

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"

답변2

PHP에서 "proc_open" 함수를 확인하세요. http://fr.php.net/manual/en/function.proc-open.php

옵션을 사용하여 htdigest를 실행한 다음 파이프에 새 비밀번호를 보낼 수 있습니다.

htdigest 작업을 수행하는 PHP 함수를 찾거나 생성할 수 있습니다. proc_open을 사용하는 것보다 쉬울 것입니다 ...

관련 정보