problema com permissão para executar htpasswd

1. problema com permissão para executar htpasswd

Gustavo Mathias Soares
gustavomathias

(usa KUbuntu)

Enviado em 10/11/2014 - 15:17h

Estou criando um sistema em PHP para adicionar usuário ao htpasswd para o arquivo htaccess ler e executar a tela de login.
Fiz o comando pelo terminal e ele criou o arquivo .htpasswd e o .htaccess criei pelo meu sistema e ele aparece a tela de login e coloco username e senha e da tudo certo.
mas na hora que crio o arquivo pelo php ele até aparece a tela de login mas não valida o login e senha.

estou achando que é o usuário, o arquivo do php fica com essas permissões:

-rw-r--r-- 1 www-data www-data 46 Nov 10 17:06 .htpasswd

o do terminal fica assim

-rw-r--r-- 1 kerubin2 kerubin2 46 Nov 10 17:06 .htpasswd

O codigo do php é este aqui.



<?php
chdir ('../../../'); //entro na pasta

if($_GET['a'] == 'criar'){ //esse é para criar pela primeira vez
exec("htpasswd -c .htpasswd ".$_POST['nome']);
exec($_POST['senha']);
}elseif($_GET['a'] == 'salvar'){ //esse é só para alterar senha e adicionar usuários novos
exec("htpasswd .htpasswd ".$_POST['nome']);
exec($_POST['senha']);
}

header('Location: ../../?p=inicio');
?>

estou achando que é permissão.


  


2. Re: problema com permissão para executar htpasswd

Eduardo Weiland
eduardoweiland

(usa Fedora)

Enviado em 10/11/2014 - 20:24h

O seu problema não é de permissões não, amigo. A maneira que você está tentando passar a senha para o comando htpasswd pelo PHP é que está errada.


exec("htpasswd -c .htpasswd ".$_POST['nome']);
exec($_POST['senha']);


Você está tentando executar a senha como um comando! O exec não vai "digitar" os parâmetros que ele recebe no shell e teclar Enter. Ele vai tentar criar um processo com aquele nome e executar.

A forma mais simples (e menos correta) de fazer o que você quer é passar a senha na própria linha de comando do htpasswd, passando a flag -b. Nesse caso, seu script ficaria assim:


exec("htpasswd -b -c .htpasswd " . $_POST['nome'] . " " . $_POST['senha']);


Essa opção não é nem um pouco segura porque a senha irá ficar visível na lista de processos do sistema. Mas a única alternativa que eu consigo pensar aqui é em você mesmo criar o arquivo e criptografar as senhas, seguindo a mesma formatação que o comando htpasswd usa.

Espero ter ajudado o/


3. :D

Gustavo Mathias Soares
gustavomathias

(usa KUbuntu)

Enviado em 11/11/2014 - 07:53h

Mas ele faz a criptografia da senha tudo certo, vou fazer o teste.
muito obrigado pela ajuda.


4. Re: problema com permissão para executar htpasswd

Eduardo Weiland
eduardoweiland

(usa Fedora)

Enviado em 11/11/2014 - 08:09h

Provavelmente ele estava criptografando uma senha vazia. Tente fazer login com um usuário válido e a senha em branco, pode funcionar...


5. só mais uma duvida

Gustavo Mathias Soares
gustavomathias

(usa KUbuntu)

Enviado em 11/11/2014 - 12:08h

queria saber se tem como eu fazer um logoff deste acesso com htaccess.



6. Re: problema com permissão para executar htpasswd

Eduardo Weiland
eduardoweiland

(usa Fedora)

Enviado em 11/11/2014 - 13:16h

Resposta curta: não. Esse tipo de autenticação é definido pelo protocolo HTTP, que não especifica nenhuma forma de descartar as informações de login.

Um hack que funciona em alguns navegadores é enviar um código de status 401 (Não Autorizado), que talvez funcione.

Se quiser mais detalhes pode ver a resposta que foi aceita nessa pergunta no StackOverflow: http://stackoverflow.com/questions/449788/http-authentication-logout-via-php






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts