Повышение привилегий в скрипте Python - PullRequest
3 голосов
/ 10 марта 2012

Я ищу способ повысить привилегии в приложении Python GUI, которое я разрабатываю.Моя желаемая модель - GUFW.Мне нравится, что вам не нужно запускать основную программу как root, но когда вы делаете что-либо «rooty», вы должны «разблокировать» ее.

У меня есть программа, в которой я разрабатываю текстовые файлы, которыенеобходимо сохранить либо в дереве домашних каталогов пользователя, либо в каталоге в / usr (для которого требуется повышение прав root).

Я не хочу запускать программу от имени пользователя root, но при вызове root-доступа/ если мне нужно сохранить файл пользователю, отличному от пользователя, запустившего программу (в данном случае, root).

Я не хочу сохранять его во временные местоположения и возвращать в (ba) sh call like:

os.system('gksu cp /tmp/myfile /usr/systemdir/myfile')

Я хотел бы сделать все это программно в Python, если это возможно.В будущем мне могут понадобиться операции, которые не просто создают файл, но могут потребовать добавления его в середине файла.

Кроме того, после выполнения этой операции сохранения я хочу деэскалировать привилегии.

Может ли кто-нибудь указать мне учебник или пример кода для этого предмета?

С уважением,

Нарни

1 Ответ

1 голос
/ 10 марта 2012

То, что вы хотите, это PolicyKit - спецификация и программное обеспечение FreeDesktop для выполнения именно этого. http://ubuntuforums.org/showthread.php?t=1359397 - это учебное пособие и пример кода для его использования с Python (хотя я не использовал PolicyKit лично, я не могу сказать, насколько он хорош или нет). Обратите внимание, что для новых dbus и glib вы захотите использовать самоанализ GObject (from gi.repository import DBus) вместо старых привязок python-dbus, и это почти наверняка приведет к изменению потока по сравнению с примером кода.

...