У меня есть приложение с графическим интерфейсом, который должен вызвать демон (написанный на Python) с привилегиями суперпользователя. Я хотел бы сделать это, не запрашивая у пользователя пароль.
Поскольку демон является скриптом, я не могу установить бит SUID напрямую. Я мог бы написать обертку C для этого, но я бы предпочел не изобретать велосипед, особенно когда ошибка с моей стороны может привести к серьезной угрозе безопасности системы.
В этой ситуации я обычно добавляю строку, /etc/sudoers
которая позволяет пользователям запускать демон от имени пользователя root без пароля, используя директиву NOPASSWD. Это отлично работает из командной строки. Однако, когда я делаю это из GUI, появляется pkexec
диалоговое окно с запросом пароля пользователя. Похоже, что в Ubuntu вызовы sudo
из GUI как-то перехватываются pkexec
.
Есть ли чистый способ обойти это? Я действительно предпочел бы не иметь дело с трудностями сценария setuid.
sudo somecommand
, всплывающее диалоговое окно является pkexec
диалоговым окном пароля, независимо от того, существует ли политика sudoers, разрешающая выполнение программы.