Product SiteDocumentation Site

11.2. Разработка новой политики

Программа gpupdate состоит из ряда механизмов, позволяющих обращаться к настройкам ОС «Альт». Механизмы обращаются к интерфейсам системы или отдельных приложений через API. Через систему механизмов gpupdate пользователю доступно создание собственных ГП так, чтобы не менять содержимое пакетов admx и gpupdate. В этом случае при очередном обновлении пакетов в системе не нарушится работа ГП — базовых и собственных. Появляется возможность создать свой набор политик, необходимый для внутреннего использования.
Механизмы применения параметров, которые позволяют создавать собственные политики:
  • Systemd. Управление запуском служб Systemd;
  • Polkit. Механизм Polkit отвечает за безопасность и правляет разрешениями при обращении к системным процессам;
  • Gsettings. Управление настройками системной базы реестра dconf;
  • Control. Механизм Control управляет состоянием конфигурационных файлов;
  • Скрипты загрузки системы и авторизации пользователя (logon/logoff/startup/shutdown).

Примечание

Скрипты загрузки системы и авторизации пользователя (Logon/logoff/startup/shutdown) не связаны с подготовкой ADMX-файлов и формируются через раздел настроек системы (работа со скриптами подробно описана на странице: Управление logon-скриптами).
Шаги создания новой политики:
  1. Подобрать механизм реализации политики — systemd, control, gsettings, polkit;
  2. Загрузить шаблоны ADMX-файлов для выбранного механизма;
  3. Описать в ADMX-файлах (admx + adml) структуру новой политики и её описание на русском или английском языке;
  4. Проверить корректность кода в ADMX-файлах, открыв редактор групповых политик — GPUI в «Альт» или RSAT в Windows;
  5. Загрузить собственный набор административных шаблонов групповых политик (admx) на контроллер домена в каталог Sysvol.

11.2.1. Пример для механизма Systemd

Подсистема инициализации и управления службами Systemd в ГП «Альт» может запускать или останавливать службы. Systemd позволяет задавать расписание запуска служб, выполнять монтирование и многое другое. Через ГП «Альт» возможно управление самостоятельно созданной пользовательской службой.

Примечание

Просмотреть список загруженных служб можно, выполнив команду:
$ systemctl list-units --type service --all
Получить список всех установленных файлов модулей можно, выполнив команду:
$ systemctl list-unit-files
Пример создания новой политики для веб-сервера Apache (служба httpd2):
  1. Создать файл MySystemd.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="systemdunits" namespace="BaseALT.Policies.MySystemdUnits" />
        <using prefix="system" namespace="BaseALT.Policies.System" />
      </policyNamespaces>
      <resources minRequiredRevision="1.0" />
      <policies>
    <policy class="Machine" displayName="$(string.httpd2_service)"
    explainText="$(string.httpd2_service_help)" key="Software\BaseALT\Policies\SystemdUnits"
    valueName="httpd2.service" name="httpd2.service">
          <parentCategory ref="system:ALT_Systemd"/>
          <supportedOn ref="system:SUPPORTED_AltP9"/>
          <enabledValue>
            <decimal value="1"/>
          </enabledValue>
          <disabledValue>
            <decimal value="0"/>
          </disabledValue>
        </policy>
      </policies>
    </policyDefinitions>
    
  2. Создать файл ru-RU/MySystemd.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>Определения служб</displayName>
      <description>Этот файл содержит дополнительные определения systemd-служб</description>
      <resources>
        <stringTable>
          <string id="httpd2_service">Веб-сервер Apache</string>
          <string id="httpd2_service_help">Эта политика определяет, включен ли systemd юнит веб-сервера Apache.
          </string>
        </stringTable>
      </resources>
    </policyDefinitionResources>
    
  3. Создать файл en-US/MySystemd.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>Services definitions</displayName>
      <description>This file contains the systemd services definitionsб</description>
      <resources>
        <stringTable>
          <string id="httpd2_service">Apache Web Server</string>
          <string id="httpd2_service_help">This policy determines whether the systemd unit of Apache Web Server is enabled.
          </string>
        </stringTable>
      </resources>
    </policyDefinitionResources>
    
  4. Скопировать обновленные файлы admx/adml на машину с Windows RSAT или GPUI.
    В Windows RSAT:
    • файл MySystemd.admx в каталог \\test.alt\sysvol\test.alt\Policies\PolicyDefinitions
    • файл ru-RU/MySystemd.adml в каталог \\test.alt\sysvol\test.alt\Policies\PolicyDefinitions\ru-RU
    • файл en-US/MySystemd.adml в каталог \\test.alt\sysvol\test.alt\Policies\PolicyDefinitions\en-US
    Windows RSAT автоматически проверит корректность этих файлов.
    В GPUI:
    • файл MySystemd.admx в каталог /usr/share/PolicyDefinitions
    • файл ru-RU/MySystemd.adml в каталог /usr/share/PolicyDefinitions/ru-RU
    • файл en-US/MySystemd.adml в каталог /usr/share/PolicyDefinitions/en-US
  5. Проверить корректность кода, открыв редактор групповых политик — GPUI в «Альт» или RSAT в Windows.
    Проверка новой политики Systemd в GPUI
  6. Если все корректно, скопировать обновленные файлы admx/adml на контроллер домена в сетевой каталог sysvol (/var/lib/samba/sysvol/<DOMAIN>/Policies/).