Python non riesce ad eseguire firefox web browser da uno script radice eseguito con i privilegi di goccia
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?
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