Я пишу приложение python3, работающее с GUI (не в терминале) в качестве пользователя. Пока это приложение работает как пользователь, мне также нужно выполнить команду, требующую root привилегий. Я видел множество примеров того, как сделать это в терминале, как этот, который на самом деле прекрасно работает в терминале:
import subprocess
subprocess.call('sudo echo "Hello world!"', shell=True)
... но мое приложение python не работает в терминале, и этот метод, по-видимому, автоматически не вызывает видимое системное приглашение, когда мой код GUI вызывает его.
Другие приложения, особенно Snap Store, каким-то образом запускают всплывающее окно системы когда им нужно что-то сделать с правами root. Например, когда я использую Snap Store для установки Notepad ++ в Ubuntu, я получаю это всплывающее окно, которое, как я подозреваю, представляет собой всплывающее окно системы, а не что-то, разработанное специально для пользователей Snap Store.
Я не очень знаком с Linux системами, но я предполагаю, что это не пользовательское всплывающее окно, а системное, потому что тот, кто хочет дать свой пароль root создателям одного их приложений? Вместо этого пользователи будут передавать его системе (которая уже знает это), а само стороннее приложение не имеет доступа к действительному паролю, но теперь может запускать команду как root.
* 1014. *
Как я могу запустить идентичное всплывающее окно из моего приложения Python, чтобы запустить команду, которая требует root привилегий? Или, в качестве альтернативы, как еще можно запустить команду root с моего python GUI, работающего от имени пользователя? Заранее благодарим за любую понятную помощь, которую вы можете оказать!