LINUX.ORG.RU

История изменений

Исправление intelfx, (текущая версия) :

Обычно polkit применяется в совокупности с dbus, для авторизации шинных запросов. Впрочем, «обычно» не значит «всегда». pkexec — это такое sudo, только с гораздо более гибкой настройкой поведения.

Как я понимаю, запрос к polkit в этом случае обрабатывается политикой по умолчанию policykit.exec

И да, и нет. В отсутствие дополнительной настройки применяются правила для действия org.freedesktop.policykit.exec (/usr/share/polkit1/actions/org.freedesktop.policykit.policy), которые по умолчанию требуют аутентификации.

Действие по умолчанию для policykit.exec можно переопределить через JS-правила в /usr/share/polkit-1/rules.d и /etc/polkit-1/rules.d, но это так не делается.

а управление правами осуществляется через локальное правило в /etc/polkit-1/rules.d/

И да, и нет. В качестве примера правильного использования pkexec можно взглянуть на файл политики для вспомогательной утилиты установки яркости подсветки в xf86-video-intel: org.x.xf86-video-intel.backlight-helper.policy.

В этом файле политики сказано, что если через pkexec выполняется файл /usr/lib/xf86-video-intel-backlight-helper, то нужно применить другие правила для действия org.x.xf86-video-intel.backlight-helper — которые по умолчанию уже не требуют никаких админских прав.

Я не говорю, что не нужно пользоваться JS-правилами. Ими нужно пользоваться для модификации поведения _сторонней_ программы, а для задания поведения по умолчанию _своей_ программы следует определить новое действие и заполнить defaults в XML-файле его описания.

Отсюда ответы на вопросы:

  1. Нужно ли создавать для приложения собственную политику, и если нужно, то где её потом размещать?

    Да, нужно. Размещать в /usr/share/polkit-1/actions/<ID действия>.policy.

  2. Можно ли избежать вызова приложения через pkexec?

    Можно, но зачем? Надо понимать, что polkit сам по себе не выдаёт UNIX-права, т. е. тебе придётся писать свой собственный SUID-хелпер, эквивалентный pkexec.

Исправление intelfx, :

Обычно polkit применяется в совокупности с dbus, для авторизации шинных запросов. Впрочем, «обычно» не значит «всегда». pkexec — это такое sudo, только с гораздо более гибкой настройкой поведения.

Как я понимаю, запрос к polkit в этом случае обрабатывается политикой по умолчанию policykit.exec

И да, и нет. В отсутствие дополнительной настройки применяются правила для действия org.freedesktop.policykit.exec (/usr/share/polkit1/actions/org.freedesktop.policykit.policy), которые по умолчанию требуют аутентификации.

Действие по умолчанию для policykit.exec можно переопределить через JS-правила в /usr/share/polkit-1/rules.d и /etc/polkit-1/rules.d, но это так не делается.

а управление правами осуществляется через локальное правило в /etc/polkit-1/rules.d/

И да, и нет. В качестве примера правильного использования pkexec можно взглянуть на файл политики для вспомогательной утилиты установки яркости подсветки в xf86-video-intel: org.x.xf86-video-intel.backlight-helper.policy.

В этом файле политики сказано, что если через pkexec выполняется файл /usr/lib/xf86-video-intel-backlight-helper, то нужно применить другие правила для действия org.x.xf86-video-intel.backlight-helper — которые по умолчанию уже не требуют никаких админских прав.

Я не говорю, что не нужно пользоваться JS-правилами. Ими нужно пользоваться для модификации поведения _сторонней_ программы, а для задания поведения по умолчанию _своей_ программы нужно определить новое действие и заполнить defaults в XML-файле его описания.

Отсюда ответы на вопросы:

  1. Нужно ли создавать для приложения собственную политику, и если нужно, то где её потом размещать?

    Да, нужно. Размещать в /usr/share/polkit-1/actions/<ID действия>.policy.

  2. Можно ли избежать вызова приложения через pkexec?

    Можно, но зачем? Надо понимать, что polkit сам по себе не выдаёт UNIX-права, т. е. тебе придётся писать свой собственный SUID-хелпер, эквивалентный pkexec.

Исправление intelfx, :

Обычно polkit применяется в совокупности с dbus, для авторизации шинных запросов. Впрочем, «обычно» не значит «всегда». pkexec — это такое sudo, только с гораздо более гибкой настройкой поведения.

Как я понимаю, запрос к polkit в этом случае обрабатывается политикой по умолчанию policykit.exec

И да, и нет. В отсутствие дополнительной настройки применяются правила для действия org.freedesktop.policykit.exec (/usr/share/polkit1/actions/org.freedesktop.policykit.policy), которые по умолчанию требуют аутентификации.

Действие по умолчанию для policykit.exec можно переопределить через JS-правила в /usr/share/polkit-1/rules.d и /etc/polkit-1/rules.d, но это так не делается.

а управление правами осуществляется через локальное правило в /etc/polkit-1/rules.d/

И да, и нет. В качестве примера правильного использования pkexec можно взглянуть на файл политики для вспомогательной утилиты установки яркости подсветки в xf86-video-intel: org.x.xf86-video-intel.backlight-helper.policy.

В этом файле политики сказано, что если через pkexec выполняется файл /usr/lib/xf86-video-intel-backlight-helper, то нужно применить другие правила для действия org.x.xf86-video-intel.backlight-helper — которые по умолчанию уже не требуют никаких админских прав.

Я не говорю, что не нужно пользоваться JS-правилами. Ими нужно пользоваться для модификации поведения _сторонней_ программы, а для задания поведения по умолчанию _своей_ программы нужно определить новое действие и заполнить defaults в XML-файле его описания.

Отсюда ответы на вопросы:

  1. Нужно ли создавать для приложения собственную политику, и если нужно, то где её потом размещать?

    Да, нужно. Размещать в /usr/share/polkit-1/actions/<ID действия>.policy.

  2. Можно ли избежать вызова приложения через pkexec?

    Можно, но зачем? Надо понимать, что polkit не выдаёт UNIX-права. Т. е. тебе придётся писать свой собственный SUID-хелпер.

Исправление intelfx, :

Обычно polkit применяется в совокупности с dbus, для авторизации шинных запросов. Впрочем, «обычно» не значит «всегда». pkexec — это такое sudo, только с гораздо более гибкой настройкой поведения.

Как я понимаю, запрос к polkit в этом случае обрабатывается политикой по умолчанию policykit.exec

И да, и нет. В отсутствие дополнительной настройки применяются правила для действия org.freedesktop.policykit.exec (/usr/share/polkit1/actions/org.freedesktop.policykit.policy), которые по умолчанию требуют аутентификации.

Действие по умолчанию для policykit.exec можно переопределить через JS-правила в /usr/share/polkit-1/rules.d и /etc/polkit-1/rules.d, но это так не делается.

а управление правами осуществляется через локальное правило в /etc/polkit-1/rules.d/

И да, и нет. В качестве примера правильного использования pkexec можно взглянуть на файл политики для вспомогательной утилиты установки яркости подсветки в xf86-video-intel: org.x.xf86-video-intel.backlight-helper.policy.

В этом файле политики сказано, что если через pkexec выполняется файл /usr/lib/xf86-video-intel-backlight-helper, то нужно применить другие правила для действия org.x.xf86-video-intel.backlight-helper — которые по умолчанию уже не требуют никаких админских прав.

Я не говорю, что не нужно пользоваться JS-правилами. Ими нужно пользоваться для модификации поведения _сторонней_ программы, а для задания поведения по умолчанию _своей_ программы нужно определить новое действие и заполнить defaults в XML-файле его описания.

Исходная версия intelfx, :

Обычно polkit применяется в совокупности с dbus, для авторизации шинных запросов. Впрочем, «обычно» не значит «всегда». pkexec — это такое sudo, только с гораздо более гибкой настройкой поведения.

Как я понимаю, запрос к polkit в этом случае обрабатывается политикой по умолчанию policykit.exec

И да, и нет. В отсутствие дополнительной настройки применяются правила для действия org.freedesktop.policykit.exec (https://github.com/krytarowski/polkit/blob/master/actions/org.freedesktop.policykit.policy.in]/usr/share/polkit1/actions/org.freedesktop.policykit.policy), которые по умолчанию требуют аутентификации. Действие по умолчанию для policykit.exec можно переопределить через JS-правила, но это так не делается.

а управление правами осуществляется через локальное правило в /etc/polkit-1/rules.d/

И да, и нет. В качестве примера правильного использования pkexec можно взглянуть на файл политики для вспомогательной утилиты установки яркости подсветки в xf86-video-intel: org.x.xf86-video-intel.backlight-helper.policy.

В этом файле политики сказано, что если через pkexec выполняется файл /usr/lib/xf86-video-intel-backlight-helper, то нужно применить другие правила для действия org.x.xf86-video-intel.backlight-helper — которые по умолчанию уже не требуют никаких админских прав.