Как реализовать несколько команд с правами root только с одним запросом пароля? - PullRequest
0 голосов
/ 16 января 2019

Я работаю над приложениями с графическим интерфейсом, которые вызывают две системные команды соответственно.

Для выполнения этих двух команд требуются права суперпользователя.

  • Первый подход, который я сделал, это позвонить gksu <command_1>, затем gksu <command_2>.

    Это работает нормально, но пользователь должен ввести свой пароль дважды соответственно, и я считаю, что это не очень хорошая идея с точки зрения UX.

  • Я пытался вызвать gksu с первой командой и sudo со второй, но я получаю эту ошибку: sudo: no tty present and no askpass program specified

  • Поэтому я попытался отделить эти команды в файле Python и вызвать команду из исходного файла, который выглядит как gksu python3 commands.py.

    Я не уверен, будет ли это выполнено после того, как я выпущу скомпилированную версию всего проекта, так как я намерен использовать pyinstaller --onefile на нем!

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

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Благодаря Itz Wam , его ответ привел меня к правильному решению, которое использует pkexec вместо gksu, например:

pkexec bash -c "command_1;command_2"
0 голосов
/ 16 января 2019

Вы можете выполнить это:

gksu -- bash -c 'command1; command2; command3'

Он спросит ваш пароль один раз и выполнит 3 команды от имени root

Источник: https://askubuntu.com/questions/183608/gksudo-2-commands-with-one-pw-entry

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...