Pergunta

Existe uma programação para construir nagiosadmin arquivos, sem depender SO de funções específicas (i.e. exec(), passthru())?

Foi útil?

Solução

.httpasswd arquivos são apenas arquivos de texto com um formato específico, dependendo da função de hash especificado.Se você estiver usando MD5 eles se parecem com isso:

foo:$apr1$y1cXxW5l$3vapv2yyCXaYz8zGoXj241

Esse é o início de sessão, dois-pontos ,$apr1$, o sal e 1000 vezes md5 codificado em base64.Se você selecionar SHA1 eles se parecem com isso:

foo:{SHA}BW6v589SIg3i3zaEW47RcMZ+I+M=

Esse é o início de sessão, dois pontos, a seqüência {SHA} e o hash SHA1 codificado com base64.

Se o seu idioma foi uma implementação de um MD5 ou SHA1 e codificação base64 você pode apenas criar o arquivo como este:

<?php

$login = 'foo';
$pass = 'pass';
$hash = base64_encode(sha1($pass, true));

$contents = $login . ':{SHA}' . $hash;

file_put_contents('.htpasswd', $contents);

?>

Veja mais informações sobre o formato de:

http://httpd.apache.org/docs/2.2/misc/password_encryptions.html

Outras dicas

Trac fornecido com uma Píton de substituição para htpasswd, que eu tenho certeza que você poderia porta para a linguagem de sua escolha: htpasswd.py.

A partir do que ele diz sobre o PHP site, você pode usar crypt() do seguinte método:

<?php

// Set the password & username
$username = 'user';
$password = 'mypassword';

// Get the hash, letting the salt be automatically generated
$hash = crypt($password);

// write to a file
file_set_contents('.htpasswd', $username ':' . $contents);

?>

Parte deste exemplo pode ser encontrado: http://ca3.php.net/crypt

Este será, naturalmente, substituir todo o arquivo existente, de modo que você vai querer fazer algum tipo de concatination.

Eu não tenho 100% de certeza de que isso vai funcionar, mas tenho quase certeza.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top