Python não consegue executar firefox webbrowser de um script raiz executado com privilégios de queda
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?
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