Назад | Перейти на главную страницу

Как LDAP обрабатывает дополнительные / вторичные группы пользователей?

Я видел похожие вопросы, связанные с настройкой Apache для аутентификации через LDAP, но этот основной вопрос все еще меня смущает.

В своей настройке я создал пользователей, у которых у всех одинаковый основной GID, а затем добавил пользователей в различные (дополнительные / вторичные) группы. Я протестировал эти учетные записи пользователей, и в большинстве случаев все работает нормально - мои разрешения, основанные на членстве в дополнительных группах, работают. Я использовал smbldap-tools пакет для настройки моих пользователей и групп, в частности, я использовал smbldap-usermod -G +NEW_GROUP user для добавления пользователей в дополнительные группы.

Если я сделаю getent group Я вижу эти дополнительные группы и их членов. Хорошо.

Если я посмотрю на запись LDAP для одной из дополнительных групп, я увижу всех пользователей в списке, как и ожидалось.

Тем не мение, когда я смотрю на запись LDAP каждого пользователя, только gidNumber соответствующая первичной группе. То есть в записях LDAP для каждого пользователя указана только основная группа и не упоминаются вторичные группы.

Как Samba / LDAP (с использованием smbldap-tools) обрабатывает дополнительные / вторичные группы?

Кроме того, как я могу сформировать поисковый фильтр для идентификации членов дополнительной группы?

LDAP - это просто каталог информации. Как эта информация сохраняется и извлекается, зависит от приложения. В этом случае пользователи и группы posix моделируются на основе файлов / etc / passwd и / etc / group. Каждая запись пользователя содержит gid для своей основной группы. Каждая группа перечисляет всех своих членов (обычно за вычетом тех, кто перечисляет ее как свою основную группу).

Samba и различные плагины nss для хранения информации о пользователях и группах в LDAP выполняют поиск групп, членом которых является пользователь, при входе в систему. Атрибут memberUid должен быть проиндексирован, чтобы ускорить поиск членства в группах. Для данной учетной записи пользователя фильтр поиска выглядит примерно так:

(&(objectclass=posixGroup)(memberUid=$user))

Если вы хотите увидеть пользователей в определенной группе, вы можете выполнить поиск с помощью:

(&(objectclass=posixGroup)(cn=$group))

Это предполагает, что все ваши группы принадлежат объектному классу posixGroup.

Я не большой пользователь OpenLDAP, но если бы это была среда Active Directory, я бы использовал атрибут memberOf, присутствующий в каждом объекте учетной записи пользователя. В мире OpenLDAP это выглядит как memberOf оверлей сделает то, что вы ищете. Я подозреваю этот вопрос расскажет вам, что вам нужно знать, чтобы начать работу.