Hola PERL!!!
Sergio Tirado Ochoa
stirado@campus.gym.itesm.mx
Thu, 14 Aug 1997 12:29:18 -0700
Tocallo, hace mucho hice un script en Perl llamado npasswd.pl para que
usuarios de nuestro servicio de Internet pudieran cambiar su password desde
un navegador (Ej. Netscape o Internet Explorer) pero nunca lo pude hacer
funcionar. El script hace todo perfectamente *menos* grabar en /etc/passwd
porque el script toma la identidad del usuario nobody que es el que utiliza
el httpd de Apache para hacer su interacción con los navegadores y Linux.
Justamente hice el manejo que comentas al fondo de este mensaje.
Leí en el libro del armadillo de O'Reilly "Essential System Administration"
en la página 229 que mi script debe de tener el SETUID access mode para
poder escribir en /etc/passwd y esto se hace con el comando chmod u+s
npasswd.pl. Pensé que con esto ya funcionaría mi script pero no fué así.
Mas delante leí en otro libro de O'Reilly (el del camello: Programming
Perl, 2nd Edition) que hay que decirle a tu script que tome la identidad de
root y deje la identidad, en este caso de nobody, para poder grabar
/etc/passwd con el comando
($<, $>) = ($> , $<);
y además modificar la variable de ambiente para que tu script tenga acceso
a lo mismo que el usuario root; cosa que hice pero tamóco logré que mi
script escribiera mi nuevo y perfectamente modificado archivo passwd en
/etc/passwd. :(
Después de días de batallar con esto mandé el proyecto al archivero y
recientemente me encontré a un proveedor de servicios de Internet en Canada
que ofrece este servicio a sus usuarios
(http://www.iosphere.net/account.html) y pienso escribirles próximamente
para preguntarles si usan Unix y Perl para en caso de ser así, fusilarmelo.
>:)
Sin embargo, después de leer este par de mensajes pensé que tal vez alguno
de ustedes tenga la solución a mi problema y decidí escribir esta nota para
explorar la posibilidad de solucionarlo por este medio.
Saludos.
At 09:41 AM 14/08/97 -0600, you wrote:
>
>Hola!
>
>> Al ejecutar el comando passwd necesita estos datos:
>>
>> Changing password for wwwadm
>> Old password:
>> New password:
>> Re-enter new password:
>>
>> Como le paso al passwd los 3 datos que necesita para hacer la
>> codificacion?
>>
>
>No necesitas pasarle nada al password ni siquiera hacer la llamada al
>sistema, Perl tiene una funci'on que cifra informaci'on exactamente igual
>que la funci'on crypt(3) de C, de este modo puedes hacer cosas como:
>
> #!/usr/bin/perl
> print "\nEscribe el password ";
> $pass = <STDIN>;
> print "\nEscribe la sal ";
> $sal = <STDIN>;
>
> $pass = crypt($pass, $sal);
>
> print "\n El password cifrado es:";
> print "\n $pass \n\n";
>
>8<--------------------------------------------------------------------->8
>
>Bonito no!, este cuate Larry Wall piensa en todo. =) Espero te sirva.
>
>Saludos!
> _ _
> ___ __ ___ _(_) |__ _
>(_-</ _` \ V / | / _` | Sergio Avila Casta~neda Tel. 624 4242
>/__/\__,_|\_/|_|_\__,_| Red Uno, CENTEC Ext. 4524
>-----------------------------------------------
>There is more than wan way to do it!
>___________________________________________________________________________
____
>PGP key: finger sac@conga.super.unam.mx ; URL:
http://ds5000.super.unam.mx/~sac
--
Sergio Tirado Ochoa mailto:stirado@campus.gym.itesm.mx
Director de Informática http://www.enlace.com.mx/~stirado
ITESM Campus Guaymas Tels: 1-0315 ext. 124 & 1-2150
--
This message is made with 100% recycled electrons