引用自 我花了一个五一终于搞懂了OpenLDAP

轻型目录访问协议(英文:Lightweight Directory Access Protocol,缩写:LDAP)是一个开放的,中立的,工业标准的应用协议,通过IP协议提供访问控制和维护分布式信息的目录信息。

大部分企业级工具都支持LDAP协议,我们可以搭建OpenLDAP服务使得这些企业级工具共享同一套用户名和密码来进行认证授权。

安装OpenLDAP

1
yum install openldap openldap-clients openldap-servers

启动OpenLDAP服务

1
service slapd start

配置OpenLDAP

root.ldif

1
2
3
4
5
6
7
8
9
10
dn: olcDatabase={2}bdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=admin,dc=example,dc=com
-
replace: olcSuffix
olcSuffix: dc=example,dc=com
-
replace: olcRootPW
olcRootPW: {SSHA}RLFdZ/Ym/O9TODUMNAPh8a7F5DzDaG5P

修改RootDN,使用指令ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f root.ldif

org.ldif

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
dn: dc=example,dc=com
dc: example
objectClass: dcObject
objectClass: organizationalUnit
ou: rootobject

dn: ou=Group,dc=example,dc=com
ou: Group
description: Groups
objectClass: organizationalUnit

dn: ou=People,dc=example,dc=com
ou: People
description: People
objectClass: organizationalUnit

使用指令ldapadd -H ldapi:/// -D "cn=admin,dc=example,dc=com" -x -w ${password} -f org.ldif。注意将${password}替换为实际的密码。

以下三个文件以同样方式执行命令。

memberof_config.ldif

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
dn: cn=module,cn=config
cn: module
objectClass: olcModuleList
olcModuleLoad: memberof
olcModulePath: /usr/lib64/openldap

dn: olcOverlay={0}memberof,olcDatabase={2}bdb,cn=config
objectClass: olcConfig
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: top
olcOverlay: memberof
olcMemberOfDangling: ignore
olcMemberOfRefInt: TRUE
olcMemberOfGroupOC: groupOfNames
olcMemberOfMemberAD: member
olcMemberOfMemberOfAD: memberOf

refint1.ldif

1
2
3
dn: cn=module{0},cn=config
add: olcmoduleload
olcmoduleload: refint

refint2.ldif

1
2
3
4
5
6
7
dn: olcOverlay={1}refint,olcDatabase={2}bdb,cn=config
objectClass: olcConfig
objectClass: olcOverlayConfig
objectClass: olcRefintConfig
objectClass: top
olcOverlay: {1}refint
olcRefintAttribute: memberof member manager owner