Как настроить pkexec, чтобы не запрашивать пароль?

10

У меня есть приложение GUI, которое нужно вызвать демона (написанного на Python) с привилегиями суперпользователя. Я хотел бы сделать это, не запрашивая пароль пользователя.

Поскольку демон является скриптом, я не могу установить бит SUID напрямую. Я мог бы написать обертку C для этого, но я бы предпочел не изобретать колесо, особенно когда ошибка с моей стороны может привести к серьезной угрозе безопасности системы.

То, что я обычно делал в этой ситуации, это добавить строку в /etc/sudoers , которая позволяет пользователям запускать демона как root без пароля, используя директиву NOPASSWD. Это отлично работает из командной строки. Однако, когда я делаю это из GUI, появляется диалоговое окно pkexec с запросом пароля пользователя. Похоже, что на Ubuntu вызовы sudo из GUI каким-то образом перехватываются pkexec .

Есть ли здесь чистый способ? Мне бы не хотелось иметь дело с суетой скрипта setuid.

    
задан Chinmay Kanchi 29.11.2013 в 11:21
источник

1 ответ

13

Неправильно сказать, что: «Кажется, что на Ubuntu вызовы sudo из графического интерфейса каким-то образом перехватываются pkexec " . pkexec не имеет много общего с sudo . В отличие от sudo , pkexec не предоставляет права root для всего процесса, а скорее позволяет более тонкий уровень управления централизованной политикой системы.

Теперь, если вы хотите запустить GUI-приложение, не задавая пароль 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 , вас больше не будет запрашивать пароль.

    
ответ дан Radu Rădeanu 10.12.2013 в 09:29
источник