root en python

Arnau Sanchez pyarnau en gmail.com
Dom Abr 27 18:20:39 CEST 2008


Sergio escribió:
> El caso es que no consigo resolver el problema ,hasta ahora tengo esto 
> hecho:
>           def compr():
>                uid = os.getuid ()
>                while uid != 0:
>                            print aviso
>                            os.execv('/bin/su',arg )
>                print uid
Ese bucle "while" no tiene mucho sentido, no intera en ningún caso (se 
comporta más bien como un "if")
> la variable arg es una tupla como sigue:
>
> arg   = ('su','-c','echo \"et.x86 0 0 disable\" > 
> /proc/asound/card0/pcm0p/oss && echo \"et.x86 0 0 direct\" > 
> /proc/asound/card0/pcm0p/oss')
Más que os.execv, yo usaría os.system o el módulo subprocess (ver FAQ)
>
> el caso es que consigo que me pida el pass pero una vez que lo 
> introducco se cierra y los comandos que se suponen se debian de 
> ejecutar no se
> ejecutan, ni siquiera se muestra el print con el uid :(
Como te han dicho, se podría usar pexpect para introducir el password, 
pero lo hagas como lo hagas, existe un potencial problema de seguridad.

En fin, que yo optaría por una solución basada en sudo (que el usuario 
pueda ejecutar un script concreto), o daría permisos adecuados a los 
ficheros que necesitas modificar (ver comandos chmod y chown), 
seguramente incluyendo al usuario en algún grupo.

arnau
_______________________________________________
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