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

Нажмите Детали, и диалоговое окно теперь будет выглядеть так:

Отсюда все, что вам нужно сделать, это открыть /usr/share/polkit-1/actions/com.ubuntu.pkexec.gparted.policy файл, используя, например, следующую команду:
gksu gedit /usr/share/polkit-1/actions/com.ubuntu.pkexec.gparted.policy
и измените следующие строки:
<allow_any>auth_admin</allow_any>
<allow_inactive>auth_admin</allow_inactive>
<allow_active>auth_admin</allow_active>со следующим:
<allow_any>yes</allow_any>
<allow_inactive>yes</allow_inactive>
<allow_active>yes</allow_active>Сохраните файл и закройте его. Затем, когда вы откроете GParted, вас больше не будут спрашивать пароль.