Cambiar IP Unix desde script Python

Jaime Perea jaime en iaa.es
Mie Nov 4 13:38:26 CET 2009


El Miércoles 04 Noviembre 2009, Félix Palazuelos Pérez escribió:
> Lo lanzo desde root siendo un usuario normal, entonces tengo que almacenar
> la contraseña en el scrip python o en un fichero y leerla desde él para
> poder cambiar a root. Ahí reside mi problema, ¿cómo almacenarla? Sólo voy a
> tener sudo en el servidor, no en los clientes.
> _______________________________________________
> Lista de correo Python-es
> http://listas.aditel.org/listinfo/python-es
> FAQ: http://listas.aditel.org/faqpyes
> 

Hola,

He estado siguiendo este thread y sólo como una idea y relativamente
peligrosa, es no ejecutar python directamente, si no más bien a través
de un programa intermedio que llame al intérprete, el ejemplo de manual
es:

http://docs.python.org/extending/embedding.html#very-high-level-embedding


La diferencia es cambiar las protecciones al ejecutable, si cambiamos
el programa de ejemplo a 
--------------
#include <Python.h>

int
  main(int argc, char *argv[])
{

   Py_Initialize();
   PyRun_SimpleString("from os import geteuid\n"
                      "print 'User is',geteuid()\n");
   Py_Finalize();
   return 0;
}
-------------
lo ponemos en pru.c, lo compilamos

gcc -o pru pru.c `python-config --includes` `python-config --libs`

si lo ejecuto como yo, obtengo lo siguiente

./pru 
User is 6001

que es mi uid

si ahora como root hago:

chown root.root pru
chmod +s pru

y ahora, como usuario hago

./pru

obtengo 
User is 0

el +s del ejecutable hace que el proceso  que se crea sea 
bajo la uid  del *dueño del fichero* (en este caso root)

Esto tiene peligro, peligro. Pero te permite no tener que escribir
en ningún sitio la clave de root, de hecho ya puestos puedes cambiar
con setuid (bajo C o python) la uid a la del usuario una vez que 
ya se ha hecho lo que se necesite como root.

Saludos

-- 

           Jaime D. Perea Duarte. <jaime at iaa dot es>
             Linux registered user #10472

           Dep. Astrofisica Extragalactica.
           Instituto de Astrofisica de Andalucia (CSIC)
           Apdo. 3004, 18080 Granada, Spain. 
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





Más información sobre la lista de distribución Python-es