Python не может запустить браузер Firefox из корневого скрипта с удаленными привилегиями - PullRequest
0 голосов
/ 16 июля 2009

Я не могу запустить firefox из сценария sudoed python, который отбрасывает привилегии обычному пользователю. Если я напишу

$ 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

Я думаю, что это не проблема с питоном, а проблема с настройкой firefox / iceweasel / debian. Может быть, Firefox только для чтения UID, а не EUID, и не выполняет процесс, потому что UID равен 0. Что вы думаете?

1 Ответ

1 голос
/ 17 июля 2009

Это может быть ваша среда. При изменении разрешений переменные окружения, такие как $ HOME, будут по-прежнему указывать на каталог корневого пользователя, который будет недоступен. Возможно, стоит попытаться изменить эти переменные, изменив os.environ перед запуском браузера. Могут быть и другие переменные, которые стоит проверить.

...