Данная статья применима к:
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.8).
Введение
Polkit (ранее известный как PolicyKit) – система авторизации, которая решает: разрешить или запретить действие, запрошенное непривилегированным пользователем, но требующее повышенных привилегий. При использовании polkit пользователь не наделяется повышенными привилегиями, что отличается, например, от программы sudo. Для принятия решения polkit может запросить у пользователя его пароль или пароль привилегированного пользователя.
... позволяющий непривилегированным пользователям (процессам) выполнять действия, требующие права администратора. При этом непривилегированные пользователи (процессы) не наделяются правами администратора, что отличается от программы sudo.
Официальная документация расположена на странице "polkit Reference Manual".
В набор программ polkit входят:
| Программа | Описание |
|---|---|
| |
| polkitd | Системная служба polkitd |
| pkcheck | Программа для проверки того, что определённому процессу дано право выполнять определённое действие в операционной системе |
| pkaction | Программа для вывода информации о зарегистрированном действии |
| pkexec | Программа для выполнения команды от имени другого пользователя |
| pkttyagent | Текстовой агент аутентификации |
Алгоритм работы polkit:
- Непривилегированная программа пользователя обращается к привилегированной программе для выполнения какого-либо действия, требующего повышенных привилегий (прав администратора).
- Привилегированная программа обращается к системной службе polkitd, чтобы проверить право пользователя на выполнение действия.
- Системная служба polkitd исходя из хранящихся правил и действий:
- если требуется, то с помощью агента аутентификации запрашивает у пользователя его пароль или пароль привилегированного пользователя;
- определяет разрешено ли пользователю выполнять запрашиваемое действие. - Системная служба polkitd отвечает привилегированной программе: разрешено или запрещено выполнить запрошенное действие.
- Если от polkitd получено разрешение, то привилегированная программа выполняет запрошенное действие.
Рисунок 1. Схема работы системы авторизации polkit
Использование polkit приложениями
Для каждой привилегированной программы в каталоге /usr/share/polkit-1/actions/ должен храниться файл *.policy, в котором описаны возможные действия, выполняемые программой.
Агент аутентификации
Агент аутентификации автоматически запускается при старте графической сессии пользователя.
Когда системе авторизации polkit требуется запросить у пользователя пароль, тогда открывается окно агента аутентификации с полем для ввода пароля. Дополнительно в окне отображается: для выполнения какого действия и от имени какого пользователя запрашивается пароль.
Внешний вид агента зависит от рабочего стола пользователя. Так, в Astra Linux SE для рабочего стола Fly используется агент polkit-kde-authentication-agent-1.
Рисунок 2. Внешний вид агента аутентификации polkit-kde-authentication-agent-1 для рабочего стола Fly
При нажатии на кнопку "Подробности >>" отображается дополнительная информация, полезная при тестировании работы polkit.
Рисунок 3. Внешний вид агента аутентификации polkit-kde-authentication-agent-1 для рабочего стола Fly. Подробности
Журналирование
Каталоги и конфигурационные файлы
| /usr/share/polkit-1/actions/ | |
| /usr/share/polkit-1/rules.d/ | |
| /etc/polkit-1/rules.d/ | |
| /etc/polkit-1/localauthority/ /var/lib/polkit-1/localauthority/ | Debian 13: For consistency with upstream and other distributions, the polkit ... as changed the syntax and location for local policy rules. You should now write local rules for customizing the security policy in JavaScript, and place them at /etc/polkit-1/rules.d/*.rules. Previously, rules could be written in pkla format, and placed in subdirectories of /etc/polkit-1/localauthority or /var/lib/polkit-1/localauthority. However, .pkla files should now be considered deprecated, and will only continue to work if the polkitd-pkla package is installed. ...so any local policy overrides will need to be migrated to the JavaScript format. |
| /usr/share/doc/polkitd/examples/ |


