Обычно все при установке применяют схему nis.schema, чтобы была совместимость с Samba и тем самым переводят работу LDAP с groupOfNames на posixGroup.
К сожалению это имеет обратный негативный момент:
Получается, что мы не сможем подключить к нашему LDAP множество хороших сервисов, как например Atlassian Jira. Нужно подключать groupOfNames.
Переходим в директорию со схемами:
Открываем для редактирования схему, посвященную загрузке модулей:
В ней будет уже подгружен один модуль - бэкэнд hdb (или bdb):
Мы подключим еще 12 модулей. Почти все они не понадобятся, но вообще в будущем меньше будете спотыкаться о нехватку чего-либо:
Причем внимание: сразу перегрузить не получится. Поэтому пошагово комментим некоторые строчки olcModuleLoad (можно и по две по три сразу) и перегружаем. Если не slapd не может рестартовать, то комментим что-нибудь и опять рестартуем.
Теперь, когда все 13 модулей подкачаны, создадим два оверлея в базе.
Перейдем в ее директорию:
И там создадим два файла:
Перезагружать пока slapd нельзя, ведь мы использовали groupOfURLs, а его еще нету. Находится он в файле /etc/ldap/schema/dyngroup.schema пакета slapd, но мы схему вгрузить не можем. Поэтому берем ее из пакета slapd от Wheezy:
Теперь можно попробовать перегрузить:
Переходим в директорию схем от cn=schema:
И там создадим объект dynamicGroup с последним свободным номером:
****
Теперь, прежде чем использовать, нужно обязательно прочитать и понять Dynamic Lists.
К сожалению это имеет обратный негативный момент:
"Its use is strongly discouraged because it is very inefficient, but mostly because posixGroup membership is a badly designed grouping philosophy"
Получается, что мы не сможем подключить к нашему LDAP множество хороших сервисов, как например Atlassian Jira. Нужно подключать groupOfNames.
Переходим в директорию со схемами:
cd /etc/ldap/slapd.d/cn=config
Открываем для редактирования схему, посвященную загрузке модулей:
vi cn=module{0}.ldif
В ней будет уже подгружен один модуль - бэкэнд hdb (или bdb):
dn: cn=module{0}
objectClass: olcModuleList
cn: module{0}
olcModulePath: /usr/lib/ldap
olcModuleLoad: {0}back_hdb
structuralObjectClass: olcModuleList
entryUUID: 0a04d41e-3161-1030-9fef-abf604861a01
creatorsName: cn=admin,cn=config
createTimestamp: 20110622211920Z
entryCSN: 20110622211920.678877Z#000000#000#000000
modifiersName: cn=admin,cn=config
modifyTimestamp: 20110622211920Z
Мы подключим еще 12 модулей. Почти все они не понадобятся, но вообще в будущем меньше будете спотыкаться о нехватку чего-либо:
dn: cn=module{0}
objectClass: olcModuleList
cn: module{0}
olcModulePath: /usr/lib/ldap
olcModuleLoad: {0}back_hdb
olcModuleLoad: {1}accesslog
olcModuleLoad: {2}auditlog
olcModuleLoad: {3}constraint
olcModuleLoad: {4}dynlist
olcModuleLoad: {5}memberof
olcModuleLoad: {6}ppolicy
olcModuleLoad: {7}refint
olcModuleLoad: {8}seqmod
olcModuleLoad: {9}syncprov
olcModuleLoad: {10}sssvlv
olcModuleLoad: {11}translucent
olcModuleLoad: {12}unique
olcModuleLoad: {13}back_monitor
structuralObjectClass: olcModuleList
entryUUID: 0a04d41e-3161-1030-9fef-abf604861a01
creatorsName: cn=admin,cn=config
createTimestamp: 20110622211920Z
entryCSN: 20110622211920.678877Z#000000#000#000000
modifiersName: cn=admin,cn=config
modifyTimestamp: 20110622211920Z
Причем внимание: сразу перегрузить не получится. Поэтому пошагово комментим некоторые строчки olcModuleLoad (можно и по две по три сразу) и перегружаем. Если не slapd не может рестартовать, то комментим что-нибудь и опять рестартуем.
Теперь, когда все 13 модулей подкачаны, создадим два оверлея в базе.
Перейдем в ее директорию:
cd olcDatabase={1}hdb
И там создадим два файла:
tee > olcOverlay={4}dynlist.ldif
dn: olcOverlay={4}dynlist
objectClass: olcOverlayConfig
objectClass: olcDynamicList
olcOverlay: {4}dynlist
olcDlAttrSet: {4}groupOfURLs memberURL
structuralObjectClass: olcDynamicList
tee > olcOverlay={5}memberof.ldifdn: olcOverlay={5}memberof
objectClass: olcOverlayConfig
objectClass: olcMemberOf
olcOverlay: {5}memberof
olcMemberOfDangling: ignore
olcMemberOfRefInt: TRUE
olcMemberOfGroupOC: posixGroup
olcMemberOfMemberAD: member
olcMemberOfMemberOfAD: memberOf
structuralObjectClass: olcMemberOf
Перезагружать пока slapd нельзя, ведь мы использовали groupOfURLs, а его еще нету. Находится он в файле /etc/ldap/schema/dyngroup.schema пакета slapd, но мы схему вгрузить не можем. Поэтому берем ее из пакета slapd от Wheezy:
tee > /etc/ldap/schema/dyngroup.ldifdn: cn=dyngroup,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: dyngroup
olcObjectIdentifier: {0}NetscapeRoot 2.16.840.1.113730
olcObjectIdentifier: {1}NetscapeLDAP NetscapeRoot:3
olcObjectIdentifier: {2}NetscapeLDAPattributeType NetscapeLDAP:1
olcObjectIdentifier: {3}NetscapeLDAPobjectClass NetscapeLDAP:2
olcObjectIdentifier: {4}OpenLDAPExp11 1.3.6.1.4.1.4203.666.11
olcObjectIdentifier: {5}DynGroupBase OpenLDAPExp11:8
olcObjectIdentifier: {6}DynGroupAttr DynGroupBase:1
olcObjectIdentifier: {7}DynGroupOC DynGroupBase:2
olcAttributeTypes: {0}( NetscapeLDAPattributeType:198 NAME 'memberURL' DESC 'I
dentifies an URL associated with each member of a group. Any type of labeled
URL can be used.' SUP labeledURI )
olcAttributeTypes: {1}( DynGroupAttr:1 NAME 'dgIdentity' DESC 'Identity to use
when processing the memberURL' SUP distinguishedName SINGLE-VALUE )
olcAttributeTypes: {2}( DynGroupAttr:2 NAME 'dgAuthz' DESC 'Optional authoriza
tion rules that determine who is allowed to assume the dgIdentity' EQUALITY a
uthzMatch SYNTAX 1.3.6.1.4.1.4203.666.2.7 X-ORDERED 'VALUES' )
olcObjectClasses: {0}( NetscapeLDAPobjectClass:33 NAME 'groupOfURLs' SUP top S
TRUCTURAL MUST cn MAY ( memberURL $ businessCategory $ description $ o $ ou $
owner $ seeAlso ) )
olcObjectClasses: {1}( DynGroupOC:1 NAME 'dgIdentityAux' SUP top AUXILIARY MAY
( dgIdentity $ dgAuthz ) )
Теперь можно попробовать перегрузить:
invoke-rc.d slapd restart
Переходим в директорию схем от cn=schema:
cd ../cn=schema
И там создадим объект dynamicGroup с последним свободным номером:
tee > cn={24}dynamicGroup.ldifdn: cn=dynamicGroup
olcObjectClasses: {0}( 2.16.840.1.113730.2.33
NAME 'groupOfURLs'
SUP top STRUCTURAL
MUST cn
MAY ( memberURL $ businessCategory $ description
$ o $ ou $ owner $ seeAlso ) )
olcAttributeTypes: {0}( 2.16.840.1.113730.1.198
NAME 'memberURL'
DESC 'Identifies an URL associated with each member of a group.
Any type of labeled URL can be used.' SUP labeledURI )
objectClass: olcSchemaConfig
cn: dynamicGroup
****
Теперь, прежде чем использовать, нужно обязательно прочитать и понять Dynamic Lists.
Комментариев нет:
Отправить комментарий