Я прихожу к LDAP как возможному инструменту для управления серверами доступа и исходным кодом на работе, и хотя я смог понять основные понятия, такие как представление пользователей и компьютеров как объектов, которые создают атрибуты и определяют какие атрибуты должны применяться к сущности на основе примененных к ним объектных классов, есть несколько ошибок, которые все еще не имеют смысла для меня, и я надеюсь, что кто-то может помочь объяснить, как они работают.
Как работают вложенные группы?
Я могу понять, что такое ou
(организационная единица), и понять, как помещать в них людей и использовать класс groupOfNames для работы в качестве контейнера для участников, например, этот фрагмент LDIF из zytrax
# create FIRST Level groups branch
dn: ou=groups,dc=example,dc=com
objectclass:organizationalunit
ou: groups
description: generic groups branch
# create the itpeople entry under groups
dn: cn=itpeople,ou=groups,dc=example,dc=com
objectclass: groupofnames
cn: itpeople
description: IT security group
member: cn=William Smith,ou=people,dc=example,dc=com
# create the hrpeople entry under groups
dn: cn=hrpeople,ou=groups,dc=example,dc=com
objectclass: groupofnames
cn: hrpeople
description: Human Resources group
member: cn=Robert Smith,ou=people,dc=example,dc=com
Как бы я добавил дополнительные уровни вложенности?
То, что я ищу, это что-то вроде этого псевдокода здесь:
ou='Projects' /
description: This top level group has a few people in it that can create new groups, and control who's in them
member: cn=Robert Smith,ou=people,dc=example,dc=com
-- somethingsomethingAbitrarilyNestedGroup='project-name'
member: cn=Robert Smith,ou=people,dc=example,dc=com
-- groupOfNames = 'project-name development'
member: cn=Robert Smith,ou=people,dc=example,dc=com
member: cn=Jane Doe,ou=people,dc=example,dc=com
member: cn=server1$,ou=servers,dc=example,dc=com
-- groupOfNames = 'project-name staging'
member: cn=Jane Doe,ou=people,dc=example,dc=com
member: cn=server2$,ou=servers,dc=example,dc=com
Учитывая эту иерархию, каков наилучший способ предоставления доступа к этой группе сейчас?
Я не вижу здесь простого способа вложения произвольной группы - среди доступных обычных классов, без использования дорогостоящего инструмента с закрытым исходным кодом, но кажется, что он не должен быть таким сложным.
Как это обычно делается с помощью такого инструмента, как OpenLDAP, позволяющего другим клиентам ldap контролировать членство в группе после того, как они аутентифицируются как пользователь с правильными правами?