Повышение привилегий в скрипте 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
привязки, и это почти наверняка будет иметь текущие изменения по сравнению с примером кода.