2010-11-06 51 views
6

Parte de mi programa python necesita acceso de administrador. ¿Cómo puedo obtener privilegios de root utilizando una ventana emergente de GUI similar al comando gksudo?¿Cómo obtener privilegios de root en python a través de un sudo gráfico?

sólo necesita privilegios de root para una pequeña parte de mi programa por lo que sería preferible sólo para tener los privilegios para una función particular.

estoy esperando para ser capaz de hacer algo como:

gksudo(my_func, 'description of why password is needed') 

Respuesta

3

Usted tiene dos opciones aquí:

Usted tendrá que hacer la parte del programa que requiere la raíz privilegios de un archivo separado y luego ejecutar el archivo de la siguiente manera:

>>> import subprocess 
>>> subprocess.call(['gksudo','python that_file.py']) 

que aparezca el mensaje de contraseña y ejecutar como root that_file.py

también puede requerir que un programa se ejecute como root desde el comenzar y solo tener el programa tipo de usuario "sudo python your_program.py" en la línea de comandos desde el principio que obviamente no es la mejor idea si su programa normalmente se lanzó desde un menú.

5

sudo se puede utilizar para poner en marcha programas que se ejecutan con privilegios de administrador. La parte de la aplicación que necesita ejecutarse como raíz debe poder invocarse como un proceso separado de la línea de comando. Si necesita alguna forma de comunicación entre los dos, usted podría utilizar enchufes o ver un archivo, etc.

+1

Pero en caso de que utilice enchufes, asegúrese de que un atacante no podría conectar con el programa gksudoed. En mi humilde opinión, sería mejor usar DBUS más o menos (específico de la sesión). – thejh

+0

En caso de ir con esta opción, se debe utilizar el módulo 'subprocess' en lugar de utilizar' os.system'. http://docs.python.org/library/subprocess.html –

Cuestiones relacionadas