Управление функциональным уровнем

Для работы с функциональным уровнем с помощью утилиты samba-tool используется подкоманда level. Также доступны подкоманды для подготовки к повышению функционального уровня (functionalprep) и обновления схемы каталога (schemaupgrade).

Вызовы подкоманд, создающие локальные базы данных на контроллере домена, должны выполняться с привилегиями локального суперпользователя (root/sudo). Вызовы подкоманд, вносящие изменения в существующие базы данных на контроллере домена, должны выполняться с использованием опции -H | --URL= и указанием учетных данных пользователя с достаточными полномочиями на уровне домена или леса (см. описание требуемых полномочий в описаниях подкоманд).

Общие сведения

Функциональные уровни леса и домена определяют набор доступных функциональных возможностей. Каждому функциональному уровню соответствует определенная версия схемы каталога.

Общее правило соответствия функциональных уровней: функциональный уровень леса =< функциональный уровень любого домена в лесу =< минимальный функциональный уровень, поддерживаемый контроллерами в домене.

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

Функциональный уровень

При добавлении нового контроллера домена Эллес в лес (операция добавления контроллера домена в существующий домен либо развертывания нового домена в новом или существующем лесу) проверяется условие: минимальный функциональный уровень, поддерживаемый контроллером домена =< текущий функциональный уровень домена =< максимальный функциональный уровень, поддерживаемый контроллером домена.

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

При добавлении контроллера Эллес в домен или развертывании домена в новом или существующем лесу информация о максимальном функциональном уровне, который может поддерживать контроллер домена, фиксируется в атрибуте msDS-Behavior-Version объекта nTDSDSA (CN=NTDS Settings) в разделе Configuration и в атрибуте domainControllerFunctionality объекта RootDSE.

Начиная с версии 1.17.0 параметр ad dc functional level не поддерживается. Не допускается передавать его значение в формате --option="ad dc functional level = <level>" при добавлении контроллера домена Эллес в существующий домен или развертывании нового домена в существующем лесу, а также явно задавать значение для него в конфигурационном файле smb.conf.

Если параметр задан в файле smb.conf, он игнорируется.

Пример получения значения атрибута msDS-Behavior-Version на контроллере домена Эллес с помощью утилиты ldbsearch:

ldbsearch -H /app/inno-samba/private/sam.ldb -b "CN=NTDS Settings,CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=samdom,DC=example,DC=com" -s base msDS-Behavior-Version
...
msDS-Behavior-Version: 7

Максимальный функциональный уровень, который может поддерживать контроллер домена Эллес, является фиксированной величиной и определяется функциональностью конкретной версии Эллес. В текущей версии Эллес он соответствует функциональному уровню Windows Server 2016.

В Табл. 1 приводятся возможные значения атрибута msDS-Behavior-Version и соответствующие им версии операционной системы Windows Server и информация о поддержке контроллерами домена Эллес.

Табл. 1. Соответствие значений атрибута msDS-Behavior-Version версиям ОС Windows Server и поддержка в Эллес
Значение атрибута Версия ОС Windows Server Поддержка в Эллес

0

Windows Server 2000

2

Windows Server 2003

3

Windows Server 2008

4

Windows Server 2008 R2

+

5

Windows Server 2012

+

6

Windows Server 2012 R2

+

7

Windows Server 2016

+

10

Windows Server 2025

Версия схемы каталога

При добавлении контроллера домена Эллес в лес (операция добавления контроллера домена в существующий домен либо развертывания нового домена в новом или существующем лесу) проверяется соответствие текущей версии схемы каталога леса и максимальной версии схемы каталога в составе Эллес.

Если текущая версия схемы леса ниже максимальной версии схемы, поставляемой в составе добавляемого контроллера домена Эллес, в процессе развертывания нового контроллера инициируется обновление схемы леса. Перед выполнением операции проверяется доступность сервера с FSMO-ролью Schema Master и наличие у пользователя, от имени которого была запрошена операция, прав администратора схемы (членство в группе Schema Admins), а также запрашивается подтверждение.

Текущая версия Эллес поставляется со схемой версии 88.

Версия схемы каталога фиксируется в атрибуте objectVersion объекта Schema в разделе Configuration.

Пример получения значения атрибута objectVersion на контроллере домена Эллес с помощью утилиты ldbsearch:

ldbsearch -H /app/inno-samba/private/sam.ldb -b "CN=Schema,CN=Configuration,DC=samdom,DC=example,DC=com" -s base objectVersion
...
objectVersion: 88

В Табл. 2 приводятся возможные значения атрибута objectVersion, соответствующие им версии операционной системы Windows Server и информация о версии, поставляемой в составе Эллес.

Табл. 2. Соответствие значений атрибута objectVersion версиям ОС Windows Server и поддержка в Эллес
Значение атрибута Версия ОС Windows Server Версия в Эллес

30

Windows Server 2003 RTM, Windows 2003 SP1, Windows 2003 SP2

31

Windows Server 2003 R2

44

Windows Server 2008 RTM

47

Windows Server 2008 R2

+

56

Windows Server 2012

+

69

Windows Server 2012 R2

+

87

Windows Server 2016

+

88

Windows Server 2019/2022

+

91

Windows Server 2025

Получение информации о текущем функциональном уровне

Для получения информации о текущем функциональном уровне (режиме работы) домена и леса используется следующий формат вызова:

samba-tool domain level show [options]

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

В процессе работы подкоманда проверяет выполнение условия: функциональный уровень леса =< функциональный уровень домена =< минимальный из максимальных функциональных уровней, поддерживаемых контроллерами в домене.

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

Параметры

Параметры вызова:

  • -H URL|--URL=URL — URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта.

Примеры

Пример вывода информации о текущем функциональном уровне домена и леса:

samba-tool domain level show
Domain and forest function level for domain 'DC=samdom,DC=example,DC=com'

Forest function level: (Windows) 2016
Domain function level: (Windows) 2016
Lowest function level of a DC: (Windows) 2016

Изменение функционального уровня

Для изменения функционального уровня (режима работы) домена используется следующий формат вызова:

samba-tool domain level set [options]

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

В процессе работы подкоманда проверяет выполнение условия: функциональный уровень леса =< функциональный уровень домена =< минимальный из максимальных функциональных уровней, поддерживаемых контроллерами в домене.

Если условие выполняется, выдается запрос подтверждения операции. В случае подтверждения запрошенное изменение применяется. Если условие не выполняется, подкоманда возвращает ошибку с соответствующим диагностическим сообщением.

Также проверяется соответствие указанного функционального уровня версии схемы каталога. Если версия схемы не соответствует требуемой, подкоманда возвращает ошибку с соответствующим диагностическим сообщением. В этом случае необходимо вручную обновить схему до требуемой версии с помощью подкоманды samba-tool domain schemaupgrade.

Подкоманда должна вызываться от имени пользователя, включенного в группу Domain Admins.

Чтобы результаты операции фиксировались в логах, необходимо использовать опцию -H URL|--URL=URL.

Параметры

Параметры вызова:

  • -H URL|--URL=URL — URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта;

  • --level=DOMAIN_LEVEL (обязательный) — функциональный уровень домена; возможные значения: 2008_R2 | 2012 | 2012_R2 | 2016;

  • --omit-confirmation — не запрашивать подтверждение выполнения операции.

Примеры

Пример изменения функционального уровня домена:

  1. На контроллере домена Эллес вызовите подкоманду:

    samba-tool domain level set --level=2012_R2
    ...
    Change domain functional level to 2012_R2? [y/N]
  2. В ответ на запрос введите y, чтобы подтвердить выполнение операции. В случае успешного завершения подкоманда возвращает сообщение:

    Domain function level changed!

Повышение функционального уровня

Для повышения функционального уровня (режима работы) домена используется следующий формат вызова:

samba-tool domain level raise [options]

Подкоманда повышает функциональные уровни домена и леса в соответствии с переданными значениями параметров --forest-level и/или --domain-level.

В процессе работы подкоманда проверяет выполнение условия: функциональный уровень леса =< функциональный уровень домена =< минимальный из максимальных функциональных уровней, поддерживаемых контроллерами в домене.

Если условие выполняется, запрошенные изменения применяются. Если условие не выполняется, подкоманда возвращает ошибку с соответствующим диагностическим сообщением.

Также проверяется соответствие указанных функциональных уровней версии схемы каталога. Если версия схемы не соответствует требуемой, подкоманда возвращает ошибку с соответствующим диагностическим сообщением. В этом случае необходимо вручную обновить схему до требуемой версии с помощью подкоманды samba-tool domain schemaupgrade.

Подкоманда должна вызываться:

  • для повышения функционального уровня домена — от имени пользователя, включенного в группу Domain Admins;

  • для повышения функционального уровня леса — от имени пользователя, включенного в группу Enterprise Admins.

Чтобы результаты операции фиксировались в логах, необходимо использовать опцию -H URL|--URL=URL.

Параметры

Параметры вызова:

  • -H URL|--URL=URL — URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта;

  • --domain-level=DOMAIN_LEVEL — функциональный уровень домена; возможные значения: 2008_R2 | 2012 | 2012_R2 | 2016;

    Если параметр не передается, должен быть задан параметр --forest-level.

  • --forest-level=FOREST_LEVEL — функциональный уровень леса; возможные значения: 2008_R2 | 2012 | 2012_R2 | 2016.

    Если параметр не передается, должен быть задан параметр --domain-level.

Примеры

Пример повышения функционального уровня домена и леса:

samba-tool domain level raise --domain-level=2016 --forest-level=2016
...
Domain function level changed!
Forest function level changed!
All changes applied successfully!

Обновление схемы каталога

Схема каталога на всех контроллерах домена (леса) должна быть одинаковой (одной версии). При добавлении в домен (лес) с более старой версией схемы нового контроллера домена с более новой версии на всех контроллерах домена (леса) происходит обновление схемы до новой версии.

Для обновления схемы каталога вручную используется следующий формат вызова:

samba-tool domain schemaupgrade [options]

Подкоманда обновляет схему каталога в соответствии с переданным значением параметра --schema или --ldf-file на контроллере домена, на котором она вызывается. После этого результаты обновления схемы и требуемые для этого подготовительные изменения распространяются на остальные контроллеры в домене через механизм репликации.

Подкоманда должна вызываться от имени пользователя, включенного в группу Schema Admins, на сервере с FSMO-ролью Schema Master.

Параметры

Параметры вызова:

  • --schema=SCHEMA — целевая версия схемы каталога; возможные значения: 2012 | 2012_R2 | 2016 | 2019; значение по умолчанию — 2019 (версия схемы каталога 88);

  • --ldf-file=LDF_FILE — обновление схемы в указанных LDF-файлах (adprep/.ldf);

  • --base-dir=BASE_DIR — расположение LDF-файлов; значение по умолчанию — &{SETUPDIR}/adprep;

  • -H URL|--URL=URL — URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта;

  • -v|--verbose — вывод подробной информации во время работы подкоманды;

  • -q|--quiet — отключение вывода диагностических сообщений во время работы подкоманды.

Примеры

Пример повышения версии схемы каталога:

samba-tool domain schemaupgrade --schema=2019

Подготовка к изменению функционального уровня

Для корректной работы домена или леса с использованием новой версии схемы каталога может потребоваться создание некоторого количества новых объектов.

Для этого используется следующий формат вызова:

samba-tool domain functionalprep [options]

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

Подкоманда должна вызываться:

  • для подготовки к повышению функционального уровня домена — от имени пользователя, включенного в группу Domain Admins, на сервере с FSMO-ролью Infrastructure Master;

  • для подготовки к повышению функционального уровня леса — от имени пользователя, включенного в группу Schema Admins, на сервере с FSMO-ролью Schema Master.

Параметры

Параметры вызова:

  • --function-level — целевой функциональный уровень; возможные значения: 2008_R2 | 2012 | 2012_R2 | 2016; значение по умолчанию — 2016;

  • --forest-prep — выполнить подготовку на уровне леса; по умолчанию подготовка выполняется и на уровне домена, и на уровне леса;

  • --domain-prep — выполнить подготовку на уровне домена; по умолчанию подготовка выполняется и на уровне домена, и на уровне леса;

  • -H URL|--URL=URL — URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта;

  • -v|--verbose — вывод подробной информации во время работы подкоманды;

  • -q|--quiet — отключение вывода диагностических сообщений во время работы подкоманды.

Примеры

Пример подготовки домена к изменению функционального уровня:

samba-tool domain functionalprep --function-level=2016