Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Problema con $ENV{PERL5LIB} y suidperl

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico
Mensaje Jue May 15, 2008 1:02 am
kondenado
Perlero Nuevo
Perlero Nuevo
Registrado: 21 Ago 2006
Mensajes: 32
Problema con $ENV{PERL5LIB} y suidperl Responder citando

Buenas, les cuento:

Pues lo que pasa es que he estado haciendo algunas pruebas con la variable de entorno PERL5LIB. He creado un script en /tmp, llamado prueba.pm (/tmp/prueba.pm) y en el fichero .pl he puesto
Perl:
use prueba;
. Como es obvio me lanza el típico error :
Cita:
Can't locate prueba.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/
perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl) at prueba.pl


Ahora, segun tengo entendido, eso se solucionaría seteando la variable de entorno PERL5LIB al directorio /tmp, (export PERL5LIB="/tmp"). En efecto, al realizar un perl -V me dice:

Cita:
%ENV:
PERL5LIB="/tmp"
@INC:
/tmp
/etc/perl
/usr/local/lib/perl/5.8.8
/usr/local/share/perl/5.8.8
/usr/lib/perl5
/usr/share/perl5
/usr/lib/perl/5.8
/usr/share/perl/5.8
/usr/local/lib/site_perl
.

Pero al momento de correr el script a través de suid -T prueba.pl me sigue lanzando el mismo error.

¿Dónde esta el problema?
Mensaje Jue May 15, 2008 1:43 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4082
Ubicación: Valladolid, España
Responder citando

No es necesario modificar la variable de entorno. Te basta con hacer un
Perl:
use lib '/tmp';


De todas maneras, el error me parece curioso. No veo dónde puede estar el problema. ¿Permisos de lectura, quizás?
Mensaje Jue May 15, 2008 1:48 am
kondenado
Perlero Nuevo
Perlero Nuevo
Registrado: 21 Ago 2006
Mensajes: 32
Responder citando

Mi idea era hacerlo sin modificar el fichero, por eso. Por lo que estuve leyendo, se puede hacer también con
Perl:
perl -Mlib=/tmp
ó
Perl:
perl -Idirectory=/tmp
Smile

Lo unico que no pude realizar fue ejecutar suidperl -T con esos comandos, ya que el fichero .pl contiene en la primera linea
Perl:
#!/usr/bin/suidperl -T
y al ejecutarlo me lanza:
Cita:
Args must match #! line at openwebmail.pl line 1.
Mensaje Sab May 17, 2008 12:08 am
kondenado
Perlero Nuevo
Perlero Nuevo
Registrado: 21 Ago 2006
Mensajes: 32
Responder citando

En definitiva, mecanismos de seguridad para correr scripts de perl bajo permisos suid.

http://perldoc.perl.org/perlsec.html

saludos
Mensaje Sab May 17, 2008 3:44 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4082
Ubicación: Valladolid, España
Responder citando

Según la documentación que hay en perldiag, el error que te sale es

Código:
Args must match #! line
    (F) The setuid emulator requires that the arguments Perl was invoked with match the arguments specified on the #! line. Since some systems impose a one-argument limit on the #! line, try combining switches; for example, turn -w -U into -wU.


Es decir, el setuid requiere que sean los mismos argumentos los que estén en la línea de invocación de Perl que los que están indicados en la línea '#!'.

Esto también está más explicado en perlsec#Switches On the "#!" Line.
Mensaje Sab May 17, 2008 11:38 am
kondenado
Perlero Nuevo
Perlero Nuevo
Registrado: 21 Ago 2006
Mensajes: 32
Responder citando

Exacto, ya me di cuenta
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group