Python no se puede ejecutar Firefox navegador web desde un script raíz ejecutado con privilegios de caída
Pregunta
No puedo correr Firefox a partir de una secuencia de comandos Python sudoed que cae privilegios de usuario normal. Si escribo
$ 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
Creo que no es un problema pitón, pero problema de configuración de Firefox / Iceweasel / debian. Tal vez firefox sólo lectura UID y no EUID, y no ejecuta proceso porque UID es igual a 0. ¿Qué opinas sobre?
Solución
Esta podría ser su medio ambiente. El cambio de los permisos aún deja variables de entorno como $ HOME señala en el directorio del usuario root, que será inaccesible. Puede valer la pena intentar alterar estas variables, cambiando os.environ
antes de lanzar el navegador. También puede haber otras variables que valen la pena.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow