Winbind/IDMapping
Описание
Домены Windows различают пользователей и группы по уникальным идентификаторам безопасности (SID). Однако в Linux для каждого пользователя и группы требуются уникальные идентификаторы UID и GID. Служба winbindd отвечает за предоставление информации о пользователях и группах домена.
Чтобы служба winbindd могла предоставлять уникальные идентификаторы для пользователей и групп в Linux, необходимо на клиенте домена настроить сопоставление идентификаторов в файле **/etc/samba/smb.conf** для:
- Локальная база данных (домен * по умолчанию)
- Домен AD
- Каждый доверенный домен, из которого пользователи должны иметь доступ к ресурсам
Samba предоставляет различные модули сопоставления идентификаторов для конкретных конфигураций. Наиболее часто используемыми модулями являются:
Бэкенд | Пример использования |
---|---|
tdb | В доменах * по умолчанию |
ad | AD домены |
rid | AD домены |
autorid | AD домены и в доменах * по умолчанию |
Планирование диапазонов идентификаторов Samba
Независимо от того, хранятся ли UID и GID Linux в Active Directory (если в AD включены расширения схемы RFC2307) или настроена их автоматическая генерация, для каждой конфигурации домена требуется уникальный диапазон идентификаторов. Этот диапазон не должен пересекаться с диапазонами других доменов.
Пример непересекающихся диапазонов сопоставления идентификаторов для доменов по умолчанию (*), AD-DOM и TRUST-DOM:
[global] ... idmap config * : backend = tdb idmap config * : range = 10000-999999 idmap config AD-DOM:backend = rid idmap config AD-DOM:range = 2000000-2999999 idmap config TRUST-DOM:backend = rid idmap config TRUST-DOM:range = 4000000-4999999
2^31 - 1 = 2147483647
Также при планировании диапазонов необходимо учитывать, что в Linux есть четыре специальных UID, которые нельзя использовать.
- 0 → root (Суперпользователь).
- 65534 → Nobody UID, также называемый UID “переполнения” или аналогичный, используется в системах Linux для обозначения пользователя, который не имеет прав доступа к системным ресурсам.
- 65535, он же “16-разрядный (uid_t) -1uid_t”. До того, как ядро Linux 2.4 было 16-разрядным, и программы, скомпилированные для этого, следовательно, предполагали, что (uid_t) -1 равно 65535. Таким образом, этот UID непригоден для использования.
Домен * по умолчанию
В доменной среде вы добавляете одну конфигурацию сопоставления идентификаторов для каждого из следующих параметров:
- Домен, членом которого является клиент, на котором производится настройка
- Каждый доверенный домен
Однако для всех остальных объектов присваиваются идентификаторы из домена по умолчанию. Сюда входят:
- Локальные пользователи и группы
- Встроенные учетные записи и группы, такие как BUILTIN\Administrators
Бэкенд домена по умолчанию должен быть доступен для записи, чтобы назначенные идентификаторы постоянно сохранялись.
Для домена по умолчанию вы можете использовать один из следующих бэкендов:
- tdb
В данном случае необходимо задать достаточно большой диапазон идентификаторов, чтобы включать объекты, которые будут созданы в будущем и которые не являются частью определенной конфигурации сопоставления идентификаторов домена.
Например, задайте следующее в разделе [global] в файле /etc/samba/smb.conf:
idmap config * : backend = tdb idmap config * : range = 10000-999999
Для получения более подробной информации см. Использование tdb
- autorid
При использовании бэкенда autorid при настройке домена * по умолчанию необязательно добавлять дополнительные конфигурации сопоставления идентификаторов для доменов.
Например, задайте следующее в разделе [global] в файле /etc/samba/smb.conf:
idmap config * : backend = autorid idmap config * : range = 10000-999999
Для получения более подробной информации см. Использование autorid
Использование tdb
Служба winbindd по умолчанию использует доступный для записи бэкенд tdb для хранения таблиц сопоставления идентификаторов безопасности (SID), UID и GID. Это относится к локальным и встроенным пользователям и группам.
Используйте этот бэкенд только для домена * по умолчанию.
Использование ad
Вы можете настроить пользователя Samba AD на использование бэкенда ad.
Бэкенд ad реализует API, доступный только для чтения, для чтения информации об учетной записи и группе из AD. Это обеспечивает следующие преимущества:
- Все настройки пользователей и групп хранятся централизованно в AD.
- Идентификаторы пользователей и групп совпадают на всех клиентах.
- Идентификаторы не хранятся в локальной базе данных, которая может быть повреждена, и, следовательно, права на файлы не могут быть потеряны.
Бэкенд часть ad считывает следующие атрибуты из AD:
Имя атрибута AD | Тип объекта | Сопоставление |
---|---|---|
sAMAccountName | Пользователь и группа | Имя пользователя или группы в зависимости от объекта |
uidNumber | Пользователь | Идентификатор пользователя (UID) |
gidNumber | Группа | Идентификатор группы (GID) |
loginShell | Пользователь | Путь к командной строке пользователя |
Предварительные требования
- И пользователи, и группы должны иметь уникальные идентификаторы, заданные в AD, и идентификаторы должны находиться в диапазоне, настроенном в /etc/samba/smb.conf файле. Объекты, идентификаторы которых находятся за пределами диапазона, не будут доступны на клиенте.
- У пользователей и групп должны быть заданы все необходимые атрибуты в AD.
- Настроено сопоставление идентификаторов в файле /etc/samba/smb.conf.
Пример
idmap config * : backend = tdb idmap config * : range = 3000-7999 idmap config TEST : backend = ad idmap config TEST : range = 10000-999999 idmap config TEST : schema_mode = rfc2307
Чтобы разрешить клиенту домена считывать командную строку входа в систему и путь к домашнему каталогу пользователей из соответствующего атрибута AD, необходимо установить:
idmap config DOMAIN : unix_nss_info = yes
В качестве альтернативы можно установить единый путь к домашнему каталогу для всего домена и командную строку входа, которые будут применяться ко всем пользователям. Например:
template shell = /bin/bash template homedir = /home/%U