История изменений
Исправление 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-файле его описания.
Отсюда ответы на вопросы:
-
Нужно ли создавать для приложения собственную политику, и если нужно, то где её потом размещать?
Да, нужно. Размещать в
/usr/share/polkit-1/actions/<ID действия>.policy
. -
Можно ли избежать вызова приложения через 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-файле его описания.
Отсюда ответы на вопросы:
-
Нужно ли создавать для приложения собственную политику, и если нужно, то где её потом размещать?
Да, нужно. Размещать в
/usr/share/polkit-1/actions/<ID действия>.policy
. -
Можно ли избежать вызова приложения через 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-файле его описания.
Отсюда ответы на вопросы:
-
Нужно ли создавать для приложения собственную политику, и если нужно, то где её потом размещать?
Да, нужно. Размещать в
/usr/share/polkit-1/actions/<ID действия>.policy
. -
Можно ли избежать вызова приложения через 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
— которые по умолчанию уже не требуют никаких админских прав.