• Publicidad

Uso del "su -" en un script

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Uso del "su -" en un script

Notapor Logan » 2005-11-07 14:10 @632

Hola a todos.

Necesito hacer un script que cambie el usuario durante su ejecución, es decir, después de que cree un archivo se cambie de usuario para que pueda escribir en un sistema de archivos.

He intentado con esto:
system("su - user");
system("pwdofuser");


Pero no funciona :cry:

¿Alguien podría ayudarme, por favor?

Saludos
Avatar de Usuario
Logan
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2005-11-07 14:06 @629

Publicidad

Notapor explorer39 » 2005-11-07 15:47 @699

Mírate este ejemplo y el mensaje siguiente.
http://perl.org.il/pipermail/perl/2003- ... 01511.html
explorer39
 

Notapor Logan » 2005-11-07 16:15 @719

Gracias por la respuesta.

Ese ejemplo es para obtener los directorios hijos a partir de un directorio padre, ¿o me equivoco :?

Yo necesito hacer un script que me permita cambiar a un usuario que ya conozco (también conozco el pwd).

Saludos
Avatar de Usuario
Logan
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2005-11-07 14:06 @629

Notapor explorer39 » 2005-11-07 18:20 @806

Pues no, es para cambiar de personalidad (de usuario).

Te decía que miraras también el siguiente mensaje porque en él recuerda que para poder hacer el cambio de usuario, hay que poner el bit suid al script.

No tengo ningún ejemplo más.

A ver si alguno de los expertos de por aquí puede explicar algo mejor como hacer esto.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my ($login,$pass,$uid,$gid) = getpwnam('username');
  2. # gid must be changed before uid. at least on my computer <img src="http://perlenespanol.com/foro/images/smilies/icon_smile.gif" alt=":)" title="Smile" />
  3. $( = $gid;
  4. $) = $gid;
  5. $< = $uid;
  6. $> = $uid;
  7.  
  8. ## Check that we managed to change Group/User IDs properly...
  9. ## Change warn to die if it's important to you
  10. if (  ((split(/ /,$)))[0] ne $gid) || ((split(/ /,$())[0] ne $gid)  ) {
  11.          warn "Couldn't Change Group ID!\n";
  12. }
  13.  
  14. if (  ($> ne $uid) || ($< ne $uid)  ) {
  15.          warn "Couldn't Change User ID!\n";
  16. }
  17.  
  18. ## We don't need these anymore...
  19. undef($login);
  20. undef($pass);
  21. undef($uid);
  22. undef($gid);
  23.  
  24. # and so the program will actually RUN at this user:
  25. fork and exit;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
explorer39
 

Notapor AkonD » 2005-11-08 10:08 @464

Perl no deja cambiar el valor de la variables $<, $>, $) y $( a no ser que la máquina tenga soporte para setreuid() y system call.

Por otra parte, el script está algo mal ya que se pueden ver los errores al asignar la variable sino tenemos system call o setreuid().

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my ($login,$pass,$uid,$gid) = getpwnam('username');
  2. # gid must be changed before uid. at least on my computer :)
  3. $( = $gid or die $!;
  4. $) = $gid or die $!;
  5. $< = $uid or die $!;
  6. $> = $uid or die $!;
  7.  
  8. ## We don't need these anymore...
  9. undef($login);
  10. undef($pass);
  11. undef($uid);
  12. undef($gid);
  13.  
  14. # and so the program will actually RUN at this user:
  15. fork and exit;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
AkonD
Perlero nuevo
Perlero nuevo
 
Mensajes: 50
Registrado: 2005-10-06 06:36 @316
Ubicación: España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron