Python não consegue executar firefox webbrowser de um script raiz executado com privilégios de queda

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

  •  16-09-2019
  •  | 
  •  

Pergunta

Eu não posso correr firefox de um script python sudoed que cai privilégios para o usuário normal. Se eu escrever

$ 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

Eu acho que não é um problema python, mas / iceweasel / debian configuração problema firefox. Talvez firefox somente leitura UID e não EUID, e não executar o processo porque UID é igual a 0. O que é que você pensa?

Foi útil?

Solução

Este poderia ser o seu ambiente. Alterar as permissões ainda vai deixar variáveis ??de ambiente como $ HOME apontando para o diretório do usuário root, que será inacessível. Pode valer a pena tentar alterar estas variáveis, alterando os.environ antes de lançar o browser. Também pode haver outras variáveis ??vale a pena conferir.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top