2014-02-02 1 views
0

Моя программа работает с привилегиями root, но мне нужна часть для запуска как непривилегированный пользователь.Запуск части кода как NON-root?

В принципе, webbrowser.open (САЙТ) не работает как root. Мой код должен запускаться как root, кроме этого. Я попытался следующие:

subprocess.call("sudo -u " + getpass.getuser() + " " + webbrowser.open("https://github.com/codywd/WiFiz/issues")) 

Это приводит следующее сообщение об ошибке:

Traceback (most recent call last): 
    File "main.py", line 364, in OnReport 
    subprocess.call("sudo -u " + getpass.getuser() + " " + webbrowser.open("https://github.com/codywd/WiFiz/issues")) 
TypeError: cannot concatenate 'str' and 'bool' objects 
START /usr/bin/chromium "https://github.com/codywd/WiFiz/issues" 
[7250:7250:0201/231848:ERROR:chrome_browser_main_extra_parts_gtk.cc(50)] Startup refusing to run as root. 

Я понимаю, почему происходит эта ошибка, но я не знаю, как еще выполнить этот код.

Спасибо заранее, ребята!

ответ

0

Похоже, ответы здесь есть то, что вы ищете: Run child processes as different user from a long running process

Однако, так как я cannont найти способ прямого доступа к подпроцессу начал внутри webbrowser.open (см документа на http://docs.python.org/2/library/webbrowser.html), вам имеют два варианта:

  • снимите модуль веб-браузера с вашего кода, откройте его через подпроцессы. На этом вы можете установить биты UID и GID.
  • установить оболочку Arround на веб-браузера (расширенный ниже)

1) создать новый сценарий питона, как правило, начинают webbrowser.open оттуда.

2) Внутри вашей основной программы создайте подпроцесс с правильным UID + GID, это вызовет ваш сценарий оболочки, описанный в 1).