СОПОСТАВЛЕНИЕ ИДЕНТИФИКАТОРОВ
Возможность сопоставления идентификаторов позволяет SSSD выступать в роли
клиента Active Directory, при этом администраторам не требуется расширять
атрибуты пользователя с целью поддержки атрибутов POSIX для идентификаторов
пользователей и групп.
ПРИМЕЧАНИЕ: когда сопоставление идентификаторов включено, атрибуты uidNumber
и gidNumber игнорируются. Это позволяет избежать возможных конфликтов между
значениями, назначенными автоматически, и значениями, назначенными
вручную. Если требуется использовать значения, назначенные вручную, следует
назначить вручную ВСЕ значения.
Обратите внимание, что изменение параметров конфигурации, связанных с
сопоставлением идентификаторов, приведёт к изменению идентификаторов
пользователей и групп. В настоящее время SSSD не поддерживает изменение
идентификаторов, поэтому базу данных SSSD необходимо удалить. Так как
кэшированные пароли также хранятся в в этой базе данных, её удаление должно
выполняться только тогда, когда серверы проверки подлинности доступны; в
ином случае пользователи могут быть заблокированы. Для кэширования пароля
необходимо выполнить проверку подлинности. Для удаления базы данных
недостаточно использовать
sss_cache 8
, на самом деле требуются следующие шаги:
Проверка доступности удалённых серверов
Остановка службы SSSD
Удаление базы данных
Запуск службы SSSD
Более того, поскольку смена идентификаторов может сделать необходимым
изменение других свойств системы, таких как параметры владения файлами и
каталогами, рекомендуется спланировать всё заранее и тщательно
протестировать конфигурацию сопоставления идентификаторов.
Алгоритм сопоставления
Active Directory предоставляет objectSID для всех объектов пользователей и
групп в каталоге. Этот objectSID можно разбить на компоненты, которые
соответствуют идентификатору домена Active Directory и относительному
идентификатору (RID) объекта пользователя или группы.
Алгоритм сопоставления идентификаторов SSSD берёт диапазон доступных UID и
делит его на разделы равного размера — «срезы». Каждый срез представляет
собой пространство, доступное домену Active Directory.
Когда запись пользователя или группы определённого домена встречается SSSD в
первый раз, SSSD выделяет один из доступных срезов для этого домена. Чтобы
такое назначение срезов воспроизводилось на разных клиентских компьютерах,
предусмотрен следующий алгоритм выбора среза:
Строка SID передаётся через алгоритм murmurhash3 для её преобразования в
32-битное хэшированное значение. Затем для выбора среза это значение с общим
количеством срезов берётся по модулю.
ПРИМЕЧАНИЕ: между хэшем и полученным далее модулем возможны конфликты. В
таких случаях будет выбран следующий доступный срез, но на других
компьютерах может быть невозможно воспроизвести точно такой же набор срезов
(так как порядок, в котором они встречаются, определяет срез). В такой
ситуации рекомендуется либо переключиться на использование явных атрибутов
POSIX в Active Directory (отключить сопоставление идентификаторов), либо
настроить стандартный домен, чтобы гарантировать согласованность хотя бы для
одного. См. Конфигурация
.
Конфигурация
Минимальная конфигурация (в разделе [domain/DOMAINNAME]
):
ldap_id_mapping = True
ldap_schema = ad
При стандартной конфигурации настраивается 10000 срезов, каждый из которых
может содержать до 200000 идентификаторов, начиная от 200000 и до
2000200000. Этого должно быть достаточно для большинства вариантов
развёртывания.
Дополнительная конфигурация
ldap_idmap_range_min (целое число)
Указывает нижнюю (включительно) границу диапазона идентификаторов POSIX,
которые следует использовать для сопоставления SID пользователей и групп
Active Directory. Это первый идентификатор POSIX, который можно использовать
для сопоставления.
ПРИМЕЧАНИЕ: этот параметр отличается от min_id
:
min_id
работает как фильтр ответов на запросы к этому домену,
в то время как этот параметр управляет диапазоном назначения
идентификаторов. Это тонкое различие, но рекомендуется устанавливать
значение min_id
меньшим или равным значению
ldap_idmap_range_min
По умолчанию: 200000
ldap_idmap_range_max (целое число)
Указывает верхнюю (не включительно) границу диапазона идентификаторов POSIX,
которые следует использовать для сопоставления идентификаторов SID
пользователей и групп Active Directory. Это первый идентификатор POSIX,
который нельзя использовать для сопоставления, т.е. данный идентификатор на
единицу больше последнего, которым можно воспользоваться для сопоставления.
ПРИМЕЧАНИЕ: этот параметр отличается от max_id
:
max_id
работает как фильтр ответов на запросы к этому домену,
в то время как этот параметр управляет диапазоном назначения
идентификаторов. Это тонкое различие, но рекомендуется устанавливать
значение max_id
большим или равным значению
ldap_idmap_range_max
По умолчанию: 2000200000
ldap_idmap_range_size (целое число)
Указывает количество идентификаторов, доступных для каждого среза. Если
размер диапазона не делится нацело на минимальное и максимальное значения,
будет создано столько полных срезов, сколько возможно.
ПРИМЕЧАНИЕ: значение этого параметра должно быть не меньше значения
максимального RID пользователя, запланированного для использования на
сервере Active Directory. Поиск записи пользователя и вход завершатся
неудачей для всех пользователей, RID которых превышает значение этого
параметра.
Например, если у последнего добавленного пользователя Active Directory
objectSid=S-1-5-21-2153326666-2176343378-3404031434-1107,
значениеldap_idmap_range_size
должно равняться минимум 1108,
так как размер диапазона рассчитывается как максимальный SID минус
минимальный SID плюс один (т.е. 1108 = 1107 - 0 + 1).
Для будущего расширения важно всё спланировать заранее,поскольку изменение
этого значения приведёт к изменению всех сопоставлений идентификаторов в
системе и, следовательно, изменению локальных идентификаторов пользователей.
По умолчанию: 200000
ldap_idmap_default_domain_sid (строка)
Позволяет указать SID стандартного домена. Это гарантирует, что этот домен
всегда будет назначаться нулевому срезу в карте идентификаторов, в обход
описанного выше алгоритма murmurhash.
По умолчанию: не задано
ldap_idmap_default_domain (строка)
Позволяет указать имена домена по умолчанию.
По умолчанию: не задано
ldap_idmap_autorid_compat (логическое значение)
Изменяет поведения алгоритма сопоставления идентификаторов, делая его более
похожим на алгоритм idmap_autorid
winbind.
When this option is configured, domains will be allocated starting with
slice zero and increasing monotonically with each additional domain.
ПРИМЕЧАНИЕ: этот алгоритм является недетерминированным (он зависит от
порядка, в котором запрашиваются пользователи и группы). Если этот режим
требуется для обеспечения совместимости с компьютерами, где работает
winbind, рекомендуется также использовать параметр
ldap_idmap_default_domain_sid
, чтобы гарантировать постоянное
выделение хотя бы одного домена для нулевого среза.
По умолчанию: false
ldap_idmap_helper_table_size (целое число)
Максимальное количество вторичных срезов, которое можно использовать при
сопоставлении идентификатору UNIX номера SID.
Примечание: дополнительные вторичные срезы могут быть созданы, когда
выполняется сопоставление SID с идентификатором UNIX и часть RID SID
находится за пределами диапазона для уже созданных вторичных срезов. Если
значение параметра ldap_idmap_helper_table_size равно нулю, дополнительные
вторичные срезы не будут созданы.
По умолчанию: 10
Известные SID
SSSD поддерживает поиск имён известных SID, то есть SID со специальным
жёстко заданным значением. Так как типичные пользователи и группы, связанные
с этими известными SID, не имеют аналогов в среде Linux/UNIX, для этих
объектов недоступны идентификаторы POSIX.
Пространство имён SID организовано по центрам, которые можно рассматривать
как разные домены. Для известных SID используются следующие центры
Null Authority
World Authority
Local Authority
Creator Authority
Mandatory Label Authority
Authentication Authority
NT Authority
Built-in
Записанные прописными буквами варианты этих имён используются в качестве
имён доменов при возврате полных имён известных SID.
Так как некоторые утилиты позволяют изменять данные управления доступом на
основе SID с помощью имени, а не непосредственного использования SID, SSSD
также поддерживает поиск SID по имени. Чтобы избежать конфликтов, для поиска
известных SID разрешается использовать только полные имена. Следовательно,
нельзя использовать в качестве имён доменов в sssd.conf
следующие названия: NULL AUTHORITY
, WORLD
AUTHORITY
, LOCAL AUTHORITY
, CREATOR
AUTHORITY
, MANDATORY LABEL AUTHORITY
,
AUTHENTICATION AUTHORITY
, NT AUTHORITY
и
BUILTIN
.