Product SiteDocumentation Site

11.2.4. Пример для механизма Polkit

Библиотека Polkit выполняет в ОС роль ограничителя действий приложений, преимущественно работающих на шине D-Bus. Polkit позволяет установить степень ограничений для непривилегированного процесса при обращении к привилегированному. Например, ограничить доступ пользователя к настройкам сети или монтированию блочного устройства (USB-накопителя) только для тех пользователей, которые знают пароль суперпользователя. Действия приложений, для которых заложены Polkit-ограничения, называются «actions». На основе указанных действий «actions» возможно формирование правил «polkit-rules», согласно которым в ОС и определится степень ограничений для программ и пользователей. Механизм gpupdate умеет автоматически формировать polkit-правила. Благодаря этому возможно добавление новых групповых политик для polkit-правил.

Примечание

Все политики находятся в каталоге /usr/share/polkit-1/actions/ в формате *.policy Каждая политика представляет собой xml-файл, в котором описываются запросы к polkit.
Вывести список всех действий, определённых в /usr/share/polkit-1/actions/ можно, выполнив команду
$ pkaction
Пример создания admx для действия org.xfce.thunar (запуск thunar от суперпользователя):
  1. Создать файл MyPolkit.admx:
    <?xml version="1.0" encoding="utf-8"?>
    <policyDefinitions xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"revision="1.0" schemaVersion="1.0"
    xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
      <policyNamespaces>
        <target prefix="xfce" namespace="BaseALT.Policies.MyPolkit" />
        <using prefix="system" namespace="BaseALT.Policies.System" />
      </policyNamespaces>
      <resources minRequiredRevision="1.0" />
      <policies>
        <policy class="Machine" displayName="$(string.org-xfce-thunar)"
            explainText="$(string.org-xfce-thunar_help)"
            key="Software\BaseALT\Policies\Polkit"
            name="org.xfce.thunar"
            valuename="org.xfce.thunar"
            presentation="$(presentation.OrgXfceThunar-pr)">
          <parentCategory ref="system:ALT_Polkit" />
          <supportedOn ref="system:SUPPORTED_AltP10" />
          <elements>
            <enum id="OrgXfceThunar_setter" valueName="org.xfce.thunar" required="true">
              <item displayName="$(string.org-xfce-thunar-No)">
                <value>
                  <string>No</string>
                </value>
              </item>
              <item displayName="$(string.org-xfce-thunar-Yes)">
                <value>
                  <string>Yes</string>
                </value>
              </item>
              <item displayName="$(string.org-xfce-thunar-Auth-self)">
                <value>
                  <string>Auth_self</string>
                </value>
              </item>
              <item displayName="$(string.org-xfce-thunar-Auth-admin)">
                <value>
                  <string>Auth_admin</string>
                </value>
              </item>
              <item displayName="$(string.org-xfce-thunar-Auth-self-keep)">
                <value>
                  <string>Auth_self_keep</string>
                </value>
              </item>
              <item displayName="$(string.org-xfce-thunar-Auth-admin-keep)">
                <value>
                  <string>Auth_admin_keep</string>
                </value>
              </item>
            </enum>
            <boolean id="OrgXfceThunar_blocker" key="Software\BaseALT\Policies\PolkitLocks" valueName="org.xfce.thunar">
              <trueValue>
                <decimal value="1" />
              </trueValue>
              <falseValue>
                <decimal value="0" />
              </falseValue>
            </boolean>
          </elements>
        </policy>
      </policies>
    </policyDefinitions>
    
  2. Создать файл ru-RU/MyPolkit.adml:
    <?xml version="1.0" encoding="utf-8"?>
    <policyDefinitionResources xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions"
    revision="1.0" schemaVersion="1.0">
      <displayName>Определения политик Xfce</displayName>
      <description>Этот файл содержит определения политик для управления Xfce.</description>
      <resources>
        <stringTable>
          <string id="org-xfce-thunar">Ограничение возможности запуска Thunar от суперпользователя</string>
          <string id="org-xfce-thunar_help">Политика управляет ограничением возможности запуска Thunar от суперпользователя
    
    Отключено/Не сконфигурировано — ограничения определяются системными параметрами.
    
    Включено — ограничение с установленными правами;
    
    Возможные значения:
    
    «No» — установить ограничение с запретом действия (пользователю не разрешено выполнять действие);
    
    «Yes» — снять ограничение (пользователь может выполнять действие без какой-либо аутентификации);
    
    «Auth_self» — пользователь должен ввести свой пароль для аутентификации.
    Обратите внимание, этого уровня ограничения недостаточно для большинства
    применений в многопользовательских системах, обычно рекомендуется «Auth_admin»;
    
    «Auth_admin» — пользователь должен ввести пароль администратора при каждом запросе.
    Требуется аутентификация пользователя с правами администратора;
    
    «Auth_self_keep» — подобно «Auth_self», но авторизация сохраняется в течение
    короткого периода времени (например, пять минут). Обратите внимание, этого уровня
    ограничения недостаточно для большинства применений в многопользовательских системах, обычно рекомендуется «Auth_admin_keep»;
    
    «Auth_admin_keep» — аналогично «Auth_admin», но авторизация сохраняется в течение
    короткого периода времени (например, пять минут);
    
    Примечание: обладание административными правами в контексте PolicyKit определяются его правилами.
    По умолчанию в Альт запрашивается пароль пользователя, находящегося в группе «wheel».
    
    Опция «Блокировать» — запрещает изменение данной настройки пользователем.
    Блокировка политики делает её приоритетнее аналогичной политики для пользователя.
          </string>
          <string id="org-xfce-thunar-No">No</string>
          <string id="org-xfce-thunar-Yes">Yes</string>
          <string id="org-xfce-thunar-Auth-self">Auth_self</string>
          <string id="org-xfce-thunar-Auth-admin">Auth_admin</string>
          <string id="org-xfce-thunar-Auth-self-keep">Auth_self_keep</string>
          <string id="org-xfce-thunar-Auth-admin-keep">Auth_admin_keep</string>
        </stringTable>
        <presentationTable>
          <presentation id="OrgXfceThunar-pr">
            <dropdownList noSort="true" defaultItem="1" refId="OrgXfceThunar_setter">Варианты ограничений
            на запуск Thunar от суперпользователя:</dropdownList>
            <checkBox refId="OrgXfceThunar_blocker">Блокировать настройку ограничений</checkBox>
          </presentation>
        </presentationTable>
      </resources>
    </policyDefinitionResources>
    
  3. Создать файл en-US/MyPolkit.adml:
    <?xml version="1.0" encoding="utf-8"?>
    <policyDefinitionResources xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions"
    revision="1.0" schemaVersion="1.0">
      <displayName>ALT Xfce policies definitions</displayName>
      <description>This file contains the Xfce service policies definitions used by ALT operating system.</description>
      <resources>
        <stringTable>
          <string id="org-xfce-thunar">Run Thunar as root</string>
          <string id="org-xfce-thunar_help">This policy grants or restricts permissions to run Thunar as root
    
    Disabledd/Not configured — Permissions are determined by system settings. Default is «Auth_admin»
    
    Enabled — permission to mount with set rights;
    
    Possible values:
    
    "No" — block permissions (the user is not allowed to perform the action);
    
    "Yes" — grant permissions (the user can perform the action without any authentication);
    
    "Auth_self" — The user must enter their password to authenticate.
    Note that this permission is not sufficient for most uses on multi-user systems,
    the "Auth_admin" permission is generally recommended;
    
    "Auth_admin" — The user must enter an administrator password on each request.
    Requires user authentication with administrator rights;
    
    "Auth_self_keep" — Similar to "Auth_self", but the authorization is kept for
    a short period of time (for example, five minutes). Note that this permission
    is not sufficient for most uses on multi-user systems, the "Auth_admin_keep" permission is generally recommended;
    
    "Auth_admin_keep" — similar to "Auth_admin", but the authorization
    is kept for a short period of time (for example, five minutes);
    
    Note: the possession of administrative rights in the context of PolicyKit
    is determined by its rules. By default, Alt asks for the password of the user in the "wheel" group.
    
    The "Block" option prevents the user from changing this setting.
    Blocking a policy makes it a priority over a similar policy for the user.
          </string>
          <string id="org-xfce-thunar-No">No</string>
          <string id="org-xfce-thunar-Yes">Yes</string>
          <string id="org-xfce-thunar-Auth-self">Auth_self</string>
          <string id="org-xfce-thunar-Auth-admin">Auth_admin</string>
          <string id="org-xfce-thunar-Auth-self-keep">Auth_self_keep</string>
          <string id="org-xfce-thunar-Auth-admin-keep">Auth_admin_keep</string>
        </stringTable>
        <presentationTable>
          <presentation id="OrgXfceThunar-pr">
            <dropdownList noSort="true" defaultItem="1" refId="OrgXfceThunar_setter">Restriction options:</dropdownList>
            <checkBox refId="OrgXfceThunar_blocker">Block</checkBox>
          </presentation>
        </presentationTable>
      </resources>
    </policyDefinitionResources>
    
  4. Скопировать обновленные файлы admx/adml на машину с Windows RSAT или GPUI.
    В Windows RSAT:
    • файл MyPolkit.admx в каталог \\test.alt\sysvol\test.alt\Policies\PolicyDefinitions
    • файл ru-RU/MyPolkit.adml в каталог \\test.alt\sysvol\test.alt\Policies\PolicyDefinitions\ru-RU
    • файл en-US/MyPolkit.adml в каталог \\test.alt\sysvol\test.alt\Policies\PolicyDefinitions\en-US
    Windows RSAT автоматически проверит корректность этих файлов.
    В GPUI:
    • файл MyPolkit.admx в каталог /usr/share/PolicyDefinitions
    • файл ru-RU/MyPolkit.adml в каталог /usr/share/PolicyDefinitions/ru-RU
    • файл en-US/MyPolkit.adml в каталог /usr/share/PolicyDefinitions/en-US
  5. Проверить корректность кода, открыв редактор групповых политик — GPUI в «Альт» или RSAT в Windows.
    Проверка новой политики Polkit в GPUI
  6. Если все корректно, скопировать обновленные файлы admx/adml на контроллер домена в сетевой каталог sysvol (/var/lib/samba/sysvol/<DOMAIN>/Policies/).