Повышение привилегий в скрипте Python

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

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

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

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

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

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

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

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

С Уважением,

Narnie

1 ответ

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

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