Python non riesce ad eseguire firefox web browser da uno script radice eseguito con i privilegi di goccia

StackOverflow https://stackoverflow.com/questions/1139835

  •  16-09-2019
  •  | 
  •  

Domanda

Non è possibile eseguire firefox da uno script python sudoed che scende privilegi di utente normale. Se scrivo

$ sudo python
>>> import os
>>> import pwd, grp
>>> uid = pwd.getpwnam('norby')[2]
>>> gid = grp.getgrnam('norby')[2]
>>> os.setegid(gid)
>>> os.seteuid(uid)
>>> import webbrowser
>>> webbrowser.get('firefox').open('www.google.it')
True
>>> # It returns true but doesn't work
>>> from subprocess import Popen,PIPE
>>> p = Popen('firefox www.google.it', shell=True,stdout=PIPE,stderr=PIPE)
>>> # Doesn't execute the command
>>> You shouldn't really run Iceweasel through sudo WITHOUT the -H option.
Continuing as if you used the -H option.
No protocol specified
Error: cannot open display: :0

Credo che non è un problema di pitone, ma problema di configurazione firefox / iceweasel / debian. Forse firefox sola lettura UID e non EUID, e non esegue processo perché UID è uguale a 0. Cosa ne pensi?

È stato utile?

Soluzione

Questo potrebbe essere il vostro ambiente. La modifica delle autorizzazioni sarà comunque lasciare variabili d'ambiente come $ HOME che punta a directory dell'utente root, che sarà inaccessibile. Può valere la pena provare alterare queste variabili, cambiando os.environ prima di lanciare il browser. Ci possono essere anche altre variabili che vale la pena.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top