2015-06-10 4 views
0

Я пишу приложение python/Qt, которое необходимо выполнить для установки на диск. Следовательно, для этого необходимы права root. Есть ли способ заставить скрипт получить права root, используя всплывающее окно для пароля, например gparted? Я знаю, что можно обнаружить в сценарии, если он был запущен с Судом или нет, с чем-то вроде этого (например, в Баш):Linux получает права доступа root через всплывающее окно пароля

if [[ $(id -u) -ne 0 ]];

Но после этого, как я прошу пароль и получить права root во время выполнения?

Спасибо.

ответ

0

Как это:

>>> import os 
>>> os.system("gksudo software-center") 

Popup Судо, который затем выполняет команду интереса (здесь, программное обеспечение центра Ubuntu).

Вы можете отредактировать это с помощью любого подпроцесса или другого способа вызова команды оболочки.

EDIT: Анонимные виджеты: gksudo - идеальный ответ здесь? Вы хотите, чтобы кто-то нуждался в корневом доступе, который, возможно, не запускал скрипт с корневым доступом для начала. gksudo - это просто интерфейс для получения прав root для выполнения команды, особенно для графических интерфейсов, в точности, что запрашивается.

Оставить комментарий пожалуйста.

+0

Спасибо. В моем приложении python я использовал «gksudo whoami», который безвреден, но дает подсказку всплывающее окно. Есть ли способ запросить разрешения sudo, не запуская определенную команду оболочки? Во-вторых, я хотел бы добавить свой собственный текст в появившееся окно. Например, gparted всплывает окна, в которых говорится, что «требуется аутентификация .... бла-бла». Как просто проверить разрешения sudo на всплывающее окно пользовательского аутентификации? –

+0

Похоже на стандартизованное всплывающее окно системы, так как оно имеет значок на стороне (используется для гнома), который сочетает в себе изображение в виде ключа и супер-наложенное изображение значка приложения (в данном случае gparted). Но я понятия не имею, как получить такое всплывающее окно. –

+0

Я получаю интерес, но я не уверен, почему вы хотите изобрести колесо? В связи с тем, что Unix обрабатывает скрипты, вам, вероятно, потребуется реализовать Rootwrap, привязанную к QMessageBox/QDialog, с вашим интересным сообщением: if event.accepted(): сделать some_task. Чтобы сделать это в чисто Python, попробуйте это: https://ask.openstack.org/en/question/60893/rootwrap-python-write-to-root-only-owned-file/ Однако это это именно ПОЧЕМУ существует gksudo: сделать корневую задачу из скрипта, где sudo недоступен. –