Scripting htdigest -c / caminho / para / file / $ user $ user $ password no Bash

7

Eu quero poder criar scripts 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, já que será uma configuração automatizada por um script PHP. Alguém poderia me mostrar como escrever isso? Ou uma função de script equivalente?

    
por Mr. King 21.08.2012 / 08:56

2 respostas

8

Veja link

O método mais fácil, baseado em uma das sugestões da resposta mais votada, é provavelmente este:

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 md5sum do GNU coreutils e awk em vez de apenas md5 , porque é o que eu instalei no meu sistema e não poderia ser incomodado descobrir qual pacote contém /usr/bin/md5 - você poderia use também sha512sum ou outro programa de hash.

por exemplo. Se user = foo , reino = bar e senha = baz , o comando acima produzirá:

foo:bar:5bf2a4095f681d1c674655a55af66c5a

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

Excluir o resumo de um determinado usuário: realm em vez de apenas adicionar um, pode ser feito facilmente com sed.

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

E atualizar / alterar 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"
    
por 21.08.2012 / 09:38
0

Verifique a função 'proc_open' em PHP link

Você pode executar o htdigest com sua opção e, em seguida, enviar para os canais a nova senha.

Você provavelmente pode encontrar / criar uma função PHP que faça o trabalho mais difícil. Deveria ser mais fácil usar o proc_open ...

    
por 21.08.2012 / 09:08