Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

Polkit (ранее известный как PolicyKit) – система авторизации, которая решает: разрешить или запретить действие, запрошенное непривилегированным пользователем, но требующее повышенных привилегий.


При использовании polkit пользователь не наделяется повышенными привилегиями, что отличается, например, от программы sudo. Для принятия решения polkit может запросить у пользователя его пароль или пароль привилегированного пользователя.

...

Система авторизации реализована в виде системной службы службы polkitd, запускаемой с минимальными правами. Для запроса пароля используется программа - агент аутентификации. Привилегированные программы для взаимодействия с системой авторизации используют динамическую библиотеку libpolkit-gobject-1.so.0.


Общение между polkitd и агентом аутентификации, привилегированными программами осуществляется с помощью системной шины D-Bus.


Официальная документация расположена на странице "polkit Reference Manual".

...

Использование polkit привилегированными программами

Для использования polkit привилегированная программа должна иметь набор действий. Каждое действие соответствует операции, которую пользователь может запросить выполнить у привилегированной программы. Действия описываются в XML-файлах с расширением .policy, которые устанавливаются в каталог /usr/share/polkit-1/actions/.

Для привилегированной программы, использующей polkit, в каталоге /usr/share/polkit-1/actions/ храниться файл с расширением .policy. В файле описаны действия, выполняемые программой.

Пример файла /usr/share/polkit-1/actions/org.freedesktop.hostname1.policy с описанием действия, соответствующего команде "hostnamectl hostname <имя_узла>":

Блок кода
<?xml version="1.0" encoding="UTF-8"?> <!--*-nxml-*-->
<!DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
        "https://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">

<!--
  SPDX-License-Identifier: LGPL-2.1-or-later
  ...
-->

<policyconfig>

        <vendor>The systemd Project</vendor>
        <vendor_url>https://systemd.io</vendor_url>

        <action id="org.freedesktop.hostname1.set-hostname">
                <description gettext-domain="systemd">Set hostname</description>
                <message gettext-domain="systemd">Authentication is required to set the local hostname.</message>
                <defaults>
                        <allow_any>auth_admin_keep</allow_any>
                        <allow_inactive>auth_admin_keep</allow_inactive>
                        <allow_active>auth_admin_keep</allow_active>
                </defaults>
        </action>

        ...

</policyconfig>



Поставщик операционной системы, системный администратор могут управлять системой авторизации с помощью правил авторизации, которые хранятся в файлах с расширением .rules.

...

Агент аутентификации автоматически запускается при старте графической сессии графического сеанса пользователя.

Агент аутентификации предназначен для того, чтобы пользователь сеанса доказал, что он является реальным пользователем ...

При необходимости проверки пароля пользователя система авторизации polkitd отправляет запрос агенту аутентификации. Открывается окно агента аутентификации с полем для ввода пароля. Дополнительно в окне отображается: для выполнения какого действия и от имени какого пользователя запрашивается пароль. Общение между polkitd и агентом осуществляется с помощью системной шины D-Bus.

Внешний вид агента зависит от рабочего стола пользователя. Так, в Astra Linux SE для рабочего стола Fly используется агент polkit-kde-authentication-agent-1.

...