2014-01-05 6 views
2

Я пишу программу GUI, которая настраивает ваши системные настройки. Для этой цели вся программа не должна запускаться как root, иначе она будет настраивать систему для пользователя root. Однако есть команда подпроцесса, которая должна запускаться с правами администратора, и я не уверен, как безопасно и правильно включить ее в свой графический интерфейс по следующим причинам.Выполнение команд подпроцесса как root в python

  1. Пользователю почти необходимо будет ввести его в интерфейс GUI.
  2. Я не уверен, как проверить правильность пароля пользователя. Как добавить проверку ошибок, чтобы предупредить пользователя о том, что пароль некорректен, не позволяя команде терпеть неудачу.
  3. Как безопасно это сделать, так как будет задействован пароль пользователей.

Мне было рекомендовано создать демона и передать ему команды. Кажется, это немного перебор, так как это всего лишь одна команда, которую нужно запустить. И поскольку пользователь не может просто ввести это в терминал, его нужно обработать интерфейсом графического интерфейса.

Есть ли у кого-нибудь другие идеи о том, как включить эту функцию?

+1

Как об использовании [ 'pkexec'] (http://www.freedesktop.org/software/polkit/docs/0.105/pkexec.1.html)? – falsetru

+0

@falsetru Это сработало бы! –

ответ

2

Вы можете использовать pkexec.

Например:

proc = subprocess.Popen(['/usr/bin/pkexec', command]) 
+0

Спасибо, это была очень умная идея. –

+0

Что делать, если мне нужно запустить несколько команд с правами root? 'pkexec' запрашивает пароль каждый раз, в отличие от sudo, который« кэширует »его на определенное количество времени. Есть ли способ добиться аналогичных результатов с помощью pkexec? – Seth

+0

@Seth Как насчет объединения 'pkexec' с' sh -c ...'? – falsetru

Смежные вопросы