autenticação linux através de uma página php.

Iniciado por deisefontoura, 03 de Fevereiro de 2009, 15:53

tópico anterior - próximo tópico

deisefontoura

Olá pessoal,
sou uma noob, então desconsiderem qualquer bobagem.

Eu preciso fazer autenticação de usuários do linux através de uma página php.
Estou tentando usar o seguinte código php:

<?php
session_start();

$usuario=$_POST["usuario"];
$senha=$_POST["senha"];
$servidor = "http://www.google.com";//$_SERVER['HTTP_HOST'];
$conexao = ftp_connect($servidor);

if(!$conexao){
echo "Servidor fora do ar";
//echo '<META HTTP-EQUIV="REFRESH" CONTENT="2; URL=teste2.html">';

}else{

if((empty($senha))or(empty($usuario))){

  echo "Usuario e Senha em branco";
// echo '<META HTTP-EQUIV="REFRESH" CONTENT="2; URL=teste2.html">';

}else{

   if (@ftp_login($conexao, $usuario, $senha)) {
       echo "Conexao efetuado com sucesso\n";
       echo "Voce esta conectado como $usuario@$servidor\n";
      echo "Command : \n";
      echo exec("ls -l /var/deise");      
       //header("Location: index.html");
       exit;
   } else {
       echo "Usuario ou senha incorretos";
//       echo '<META HTTP-EQUIV="REFRESH" CONTENT="2; URL=teste2.html">';
   }
}}
ftp_close($conexao);
?>

Mas cada vez que tento acessar a página aparece a resposta de "servidor fora do ar",
sendo que o servidor não está offline (tanto que estou com o winscp e o putty conectados nesse servidor),
creio que ele apenas não esteja conseguindo estabelecer a conexão com o ftp_connect, mas não
consigo imaginar por que...

Alguém pode me ajudar? Alguma outra maneira de fazer essa autenticação direto no linux, sem
usar banco de dados (aliás isso é seguro?)

Agradeço se alguém ajudar :)

agente100gelo

Você realmente não conseguirá fazer uma conexão FTP com o Google :D

Rapaz, o que você realmente quer?
Depois da autenticação, o que dará acesso a este usuário?
Advogado e analista de sistema cearense.
Twitter: @glaydson

deisefontoura

Ops, postei o código errado ali, AQUILO DO GOOGLE ERA SÓ UM TESTE, desconsidere.

O servidor é obtido através do $servidor = $_SERVER['HTTP_HOST'];

Bom, como eu disse, estou tentando conectar nesse servidor e fazer autenticação
de um usuário linux através desse script php.

Como disse anteriormente, eu estou constantemente conectada à esse servidor através de
programas como putty, mas quando executo o script php, ele retorna a mensagem
de que o servidor está offline (sendo que NÃO está.)

Gostaria de saber quais motivos poderiam levar ao script não conseguir estabelecer uma conexão,
ou então que me sugerissem alguma outra maneira de fazer essa autenticação.

Obrigada,

Deise.

agente100gelo

Deise,

Desculpa pelo "rapaz". É força do hábito de conviver num clube do bolinha.

O problema do seu script é que ele está tentando fazer uma conexão FTP quando você precisa de uma conexão SSH (como do Putty). Retorna off-line porque você não deve ter um servidor FTP configurado.

Para fazer uma conexão SSH, siga os link abaixo:
http://kevin.vanzonneveld.net/techblog/article/make_ssh_connections_with_php/
http://phpbuilder.com/manual/en/ref.ssh2.php

Advogado e analista de sistema cearense.
Twitter: @glaydson

deisefontoura

Querido, Obrigada pela dica, segui o passo a passo
da página que você me enviou. Tive alguns
problemas com a instalaçao do ssh, o pecl
não funcionava , tive que instalar manualmente.
ainda assim as funções do ssh não são reconhecidas,
estou tentando descobrir porque, inclusive postei
um comment lá pra ver se me ajudam :)
além da extension no php.ini (que creio
ter colocado no local correto ) o que
mais pode estar errado - sendo que
tudo correu bem na instalação?

deisefontoura

Depois muito pesquisar, fiz esse script, que finalmente autentica usuários.

#abrindo o arquivo de senhas
$file = '/etc/shadow'; /*ou /etc/passwd, obs o usuario do apache precisa ter permissao para ler esse arquivo*/
$open = fopen($file,r);

#Carrega o usuário e senha
$user = 'deise';/*aqui vai o post do usuário*/
$pass = 'deise';

#"Expressão" para encontrar o usuário

$regex_usu = $user;

#Expressão para encontrar a senha
$regex_pass = $user.'\:([^\:]*)\:';


if($open){
   $read = fread($open,8192);
   if($read)
   {
       #
      echo "leu o arquivo";
      echo "<br>";
      echo $read;
      echo "<br>";
      #
      ereg($regex_usu,$read,$result_usu);
      ereg($regex_pass,$read,$result_pass);
      #
      echo "usuario:";
      print_r($result_usu[0]);
      echo "<br>";
      #
      echo "Senha:";      
      print_r($result_pass[1]);
      echo "<br>";   
         
         if($result_usu[0] == $user)
         {
            echo "usuario correto";
            echo "<br>";            
            if (crypt($pass, $result_pass[1]) == $result_pass[1]) {
      
                echo "Senha correta";
               echo "<br>";
               echo "Autenticacao completa";
               echo "<br>";               
            }else
            {
               echo "Senha incorreta";
               echo "<br>";                     
            }
         }else
         {
            echo "Usuario incorreto";
            echo "<br>";            
         }
   }else
   {
      echo "Falhou ao ler o arquivo";
      echo "<br>";      
   }
}else{
echo "Falhou ao abrir o arquivo";
echo "<br>";
}

deisefontoura

obs. considerar aquela carinha :( no meio do código como : ( sem o espaço no meio.