Как настроить 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, вас больше не будут спрашивать пароль.