2010-11-06 16 views
6

Parte del mio programma Python ha bisogno di accesso come amministratore. Come posso ottenere i privilegi di root utilizzando un popup GUI simile al comando gksudo?Come ottenere i privilegi di root in python tramite un sudo grafico?

Ho solo bisogno di privilegi di root per una piccola parte del mio programma per cui sarebbe preferibile avere solo i privilegi per una particolare funzione.

Spero di essere in grado di fare qualcosa di simile:

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

risposta

3

Hai due opzioni qui:

Sarà necessario fare la parte del programma che richiede radice privilegi di un file separato e quindi eseguire il file in questo modo:

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

che farà apparire la richiesta di password ed eseguire that_file.py come root

Si potrebbe anche richiedere che un programma di essere eseguito come root dalla iniziare e basta avere il programma tipo di utente "sudo python your_program.py" nella riga di comando fin dall'inizio che ovviamente non è la migliore idea se il programma viene normalmente avviato da un menu.

5

sudo può essere usato per lanciare i programmi in esecuzione con privilegi di amministratore. La parte della tua applicazione che deve essere eseguita come root, deve poter essere invocata come processo separato dalla riga di comando. Se avete bisogno di qualche forma di comunicazione tra i due, è possibile utilizzare i socket o guardare per un file, ecc

+1

Tuttavia, se si utilizzano socket, assicurarsi che un utente malintenzionato non possa connettersi al programma gksudoed. IMHO, sarebbe meglio usare DBUS o così (sessione specifica). – thejh

+0

dovresti usare questa opzione, dovresti usare il modulo 'subprocess' invece di usare' os.system'. http://docs.python.org/library/subprocess.html –

Problemi correlati