Как получить root-права в python с помощью графического sudo?

Часть моей программы на Python требует доступа администратора. Как я могу получить привилегии root, используя всплывающее окно GUI, подобное gksudo команда?

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

Я надеюсь, что смогу сделать что-то вроде:

gksudo(my_func, 'description of why password is needed')

2 ответа

Решение

У вас есть два варианта здесь:

Вам нужно будет сделать часть программы, которая требует прав суперпользователя, отдельным файлом, а затем выполнить файл следующим образом:

>>> import subprocess
>>> subprocess.call(['gksudo','python that_file.py'])

который вызовет запрос пароля и запустит that_file.py от имени пользователя root

Вы также можете потребовать, чтобы программа запускалась с правами root с самого начала и просто иметь в командной строке типа пользователя "gksudo python your_program.py", что, очевидно, не лучшая идея, если ваша программа обычно запускается из меню.

gksudo можно использовать для запуска программ, работающих с правами администратора. Часть вашего приложения, которая должна быть запущена от имени пользователя root, должна вызываться как отдельный процесс из командной строки. Если вам нужна какая-то форма связи между ними, вы можете использовать сокеты или посмотреть файл и т. Д.

Другие вопросы по тегам