Criando scripts htdigest -c / path / to / file / $ user $ user $ password no Bash

8

Quero poder criar um script com uma senha na variável $ password.

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

No momento, ele me pede para inserir manualmente uma senha; isso não será possível, pois será uma configuração automatizada por um script PHP. Alguém poderia me mostrar como escrever isso? Ou uma função programável equivalente?

Mr. King
fonte

Respostas:

9

Consulte /programming/645659/how-do-you-htdigest-400-user-accounts

O método mais fácil, com base em uma das sugestões da resposta mais votada, é provavelmente o seguinte:

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

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

Eu usei o md5sumGNU coreutils e awknão apenas md5porque é o que eu instalei no meu sistema e não me incomodei em descobrir qual pacote contém /usr/bin/md5- você também pode usar sha512sumou outro programa de hash.

por exemplo, se user = foo , realm = bar e password = baz , o comando acima produzirá:

foo:bar:5bf2a4095f681d1c674655a55af66c5a

O htdigest não faz nada de mágico ou mesmo incomum - apenas gera o usuário, o domínio e a senha no formato correto ... como o comando acima.

A exclusão do resumo de um determinado usuário: o domínio, em vez de apenas adicionar um, pode ser feito facilmente com o sed.

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

E atualizando / alterando o resumo para um usuário: o domínio também pode ser feito com sed em combinação com o método acima para gerar a linha de resumo. por exemplo

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"
cas
fonte
awesome: P teve alguns problemas quando o arquivo ainda não existia, por isso crio o arquivo antes de executar o seguinte: o
Mr. King
0

Verifique a função 'proc_open' no PHP http://fr.php.net/manual/en/function.proc-open.php

Você pode executar o htdigest com sua opção e enviar nos canais a nova senha.

Provavelmente, você pode encontrar / criar uma função PHP que faça o trabalho mais difícil. Deve ser mais fácil do que usar proc_open ...

Dom
fonte
é muito mais complexo do que simplesmente fazer um novo usuário apache: p usando php não é uma opção
King