• Publicidad

Problema con módulo Authen::Simple::PAM

Aquí encontrarás todo lo que sea específicamente acerca de módulos de Perl. Ya sea que estás compartiendo tu módulo, un manual o simplemente tienes una duda acerca de alguno.

Problema con módulo Authen::Simple::PAM

Notapor palafox87 » 2012-06-23 00:47 @074

¡Hola de nuevo!

Les comento que estoy trabajando en un sencillo script de Perl que permita a un usuario de un equipo montado en Linux (Ubuntu 11.10) registrarse con la cuenta que ya tiene en dicho equipo. Todo esto desde el navegador web.

El raro problema que tengo es que en la mañana funcionaba perfectamente, dejé el equipo apagado, regresé en la tarde y cual sería mi sorpresa que al registrarme ¡el script me manda error de login!

Revisé todo el pequeño script y todo está bien, cuando lo ejecuto desde la línea de comandos funcionó bien.

¿Qué creen que pueda estar pasando?

El archivo ya cuenta con los permisos necesarios para su ejecución.

Aquí el código del script:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. use strict;
  4. use warnings;
  5.  
  6. use CGI qw(:all);
  7. use Authen::Simple::PAM;
  8.  
  9. my $cgi = new CGI;
  10.  
  11. my $pam = Authen::Simple::PAM->new(
  12.         service => 'login'
  13.       );
  14.  
  15. print $cgi->header();
  16.  
  17.  
  18. if( $pam->authenticate( "user", "123456" ) ) {
  19.             print "OK!";
  20. } else {
  21.             print "Error! intenta nuevamente...";
  22. }
  23.  
Coloreado en 0.007 segundos, usando GeSHi 1.0.8.4


De antemano, ¡¡muchas gracias!!

Saludos.
palafox87
Perlero Nuevo
Perlero Nuevo
 
Mensajes: 9
Registrado: 2012-05-06 00:54 @079

Publicidad

Re: Problema con módulo Authen::Simple::PAM

Notapor explorer » 2012-06-23 07:11 @341

Si el programa ha funcionado, entonces el programa está bien.

Quizás ha cambiado alguna de las condiciones externas... Al reiniciar la máquina, quizás el usuario que ejecuta el servidor web/cgi es distinto. O falta por arrancar un servicio. ¿Ha desaparecido el usuario? ¿El PAM está conectado a una base de datos y ésta no ha arrancado?

¿No sale nada en el registro de actividad del servidor web (error.log)?
JF^D Perl Programming Language
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 12997
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Problema con módulo Authen::Simple::PAM

Notapor palafox87 » 2012-06-23 11:27 @519

Hola explorer, gusto en saludarte.

No, el módulo PAM no está conectado a una BD, en la documentación del módulo se menciona que lo que hace el módulo es leer el archivo "passwd".

Por otro lado, en el archivo error.log no hay ningún error.

Te comento que el archivo se lo asigné al usuario de Apache (en mi caso www-data), ya lo cambié a root, pero sigue igual.

¡Saludos!
palafox87
Perlero Nuevo
Perlero Nuevo
 
Mensajes: 9
Registrado: 2012-05-06 00:54 @079

Re: Problema con módulo Authen::Simple::PAM

Notapor explorer » 2012-06-23 12:38 @568

Ejecútalo desde la línea de comandos, a ver qué saca.
JF^D Perl Programming Language
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 12997
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Problema con módulo Authen::Simple::PAM

Notapor palafox87 » 2012-06-23 19:01 @834

Gracias explorer.

Desde la línea de comandos funciona perfectamente.

Saludos.
palafox87
Perlero Nuevo
Perlero Nuevo
 
Mensajes: 9
Registrado: 2012-05-06 00:54 @079

Re: Problema con módulo Authen::Simple::PAM

Notapor palafox87 » 2012-06-24 01:58 @123

explorer:

Te comento que después de muchos intentos fallidos por hacer funcionar el módulo en entorno web, me he desesperado y he intentado otra forma (con el mismo módulo) pero que ahora sí funciona. Te explico:

Sabiendo que el script funciona desde la línea de comandos he separado en dos archivos, el login:

login_mod.pl: Este archivo hace el login (este archivo le pertenece a root):

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use Authen::Simple::PAM;
  2.  
  3. my $pam = Authen::Simple::PAM->new(
  4.                 service => 'login'
  5.                 );
  6.  
  7. my $user = $ARGV[0];
  8. my $pass = $ARGV[1];
  9.  
  10.    if ( $pam->authenticate($user,$pass ) ) {
  11.         exit 0;
  12.     }
  13.     else
  14.     {
  15.         exit 1;
  16. }
  17.  
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4



login.cgi: Este archivo será el encargado de recibir los parámetros desde el formulario (este archivo le pertenece al usuario de apache, www-data):

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use CGI qw(:all);
  2.  
  3. my $cgi = new CGI;
  4. print $cgi->header();
  5.  
  6. my $login_mod = "./login_mod.pl";
  7.  
  8. #Ejecuto el script que hace login
  9. system qq(sudo $login_mod 'user' '123456');
  10.  
  11. #Capturo su salida    
  12. my $resultado = $? >> 8;
  13.  
  14. if($resultado == 0){
  15.   print "OK!";
  16. }else{
  17.   print "Error!";
  18. }
  19.  
Coloreado en 0.006 segundos, usando GeSHi 1.0.8.4


Pensándolo bien, este método es más seguro, ya que me permite más control sobre el script del login debido a que éste mismo se debe ejecutar con privilegios de super-usuario, mismos que puedo controlar con el archivo sudoers como te lo comenté en un post anterior: problema-para-ejecutar-script-en-perl-via-web-t7169.html

Saludos y de nuevo, ¡muchas gracias, explorer!
palafox87
Perlero Nuevo
Perlero Nuevo
 
Mensajes: 9
Registrado: 2012-05-06 00:54 @079


Volver a Módulos

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados