Python no se puede ejecutar Firefox navegador web desde un script raíz ejecutado con privilegios de caída

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

  •  16-09-2019
  •  | 
  •  

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?

¿Fue útil?

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
scroll top