Product SiteDocumentation Site

11.2.2. Пример для механизма Control

Подсистема Control в Linux-дистрибутивах является интерфейсом управления конфигурацией системы. Возможно написание собственных Control-интерфейсов для изменения системных или прикладных настроек, управляемых в дальнейшем через групповые политики.

Примечание

Просмотреть список опций Control можно, выполнив команду:
# control

Примечание

Ниже рассмотрен пример создания admx для Control osec-send:
# control osec-send help
mail: Mail root
journal: Write to systemd journal
Пример создания новой политики для Control osec-send:
  1. Создать файл MyControl.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="control" namespace="BaseALT.Policies.MyControl" />
        <using prefix="system" namespace="BaseALT.Policies.System" />
      </policyNamespaces>
      <resources minRequiredRevision="1.0" />
      <policies>
        <policy class="Machine" displayName="$(string.osec-send)"
        explainText="$(string.osec-send_help)" key="Software\BaseALT\Policies\Control"
        name="osec-send" presentation="$(presentation.osec-send)">
          <parentCategory ref="system:ALT_Services"/>
          <supportedOn ref="system:SUPPORTED_AltP9"/>
          <elements>
            <enum id="osec-send_setter" required="true" valueName="osec-send">
              <item displayName="$(string.osec-send_mail)">
                <value>
                  <string>mail</string>
                </value>
              </item>
              <item displayName="$(string.osec-send_journal)">
                <value>
                  <string>journal</string>
                </value>
              </item>
            </enum>
          </elements>
        </policy>
      </policies>
    </policyDefinitions>
    
  2. Создать файл ru-RU/MyControl.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>Этот файл содержит определения политик управления системными компонентами.</description>
      <resources>
        <stringTable>
          <string id="osec-send">Отчет подсистемы osec</string>
          <string id="osec-send_help">Политика позволяет определить куда отправлять ежедневный отчёт:
    
    Почта — отправлять отчёт на почтовый ящик пользователя root
    
    Журнал — записывать отчёт в системный журнал
          </string>
          <string id="osec-send_mail">Почта</string>
          <string id="osec-send_journal">Журнал</string>
        </stringTable>
        <presentationTable>
          <presentation id="osec-send">
            <dropdownList noSort="true" defaultItem="0" refId="osec-send_setter">Куда отправлять отчёт:
            </dropdownList>
          </presentation>
        </presentationTable>
      </resources>
    </policyDefinitionResources>
    
  3. Создать файл en-US/MyControl.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>Control installed facilities definitions</displayName>
      <description>This file contains the control installed facilities definitions.</description>
      <resources>
        <stringTable>
          <string id="osec-send">Osec Subsystem Report</string>
          <string id="osec-send_help">The policy allows you to determine where to send the daily report:
    
    Mail — Mail root
    
    Journal — Write to systemd journal
          </string>
          <string id="osec-send_mail">Mail</string>
          <string id="osec-send_journal">Journal</string>
        </stringTable>
        <presentationTable>
          <presentation id="osec-send">
            <dropdownList noSort="true" defaultItem="0" refId="osec-send_setter">Where to send the report:
            </dropdownList>
          </presentation>
        </presentationTable>
      </resources>
    </policyDefinitionResources>
    
  4. Скопировать обновленные файлы admx/adml на машину с Windows RSAT или GPUI.
    В Windows RSAT:
    • файл MyControl.admx в каталог \\test.alt\sysvol\test.alt\Policies\PolicyDefinitions
    • файл ru-RU/MyControl.adml в каталог \\test.alt\sysvol\test.alt\Policies\PolicyDefinitions\ru-RU
    • файл en-US/MyControl.adml в каталог \\test.alt\sysvol\test.alt\Policies\PolicyDefinitions\en-US
    Windows RSAT автоматически проверит корректность этих файлов.
    В GPUI:
    • файл MyControl.admx в каталог /usr/share/PolicyDefinitions
    • файл ru-RU/MyControl.adml в каталог /usr/share/PolicyDefinitions/ru-RU
    • файл en-US/MyControl.adml в каталог /usr/share/PolicyDefinitions/en-US
  5. Проверить корректность кода, открыв редактор групповых политик — GPUI в «Альт» или RSAT в Windows.
    Проверка новой политики Control в GPUI
  6. Если все корректно, скопировать обновленные файлы admx/adml на контроллер домена в сетевой каталог sysvol (/var/lib/samba/sysvol/<DOMAIN>/Policies/).