本教程相关 LDIF 文件下载:
相关 idif 文件 https://download.csdn.net/download/mshxuyi/86511892
LDAP:
LDAP(Lightweight Directory Access Protocol,轻型目录访问协议),是一种基于 TCP/IP的访问在线目录服务的协议,有V2和V3版本,其中现在用得最多的都是V3版本。而 openLDAP 则是这种协议的开源的实现,被广泛应用于 " 目录访问权限控制 " 这一目的
1、安装
# 安装
yum install -y openldap-servers openldap-clients
# 复制一个默认配置到指定目录下,并授权
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap:ldap /var/lib/ldap/DB_CONFIG
# 启动
systemctl start slapd
systemctl enable slapd
2、修改配置
# 生成管理员密码
slappasswd -s abc@123
# 显示
{SSHA}Hj8Fc0yIgn/ACV5ZdJdAR+Rq+Ug57Nd5
vim chrootpw.ldif
# 内容
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}YzpdyJJBH3pNjXpQO7C/NvmWdxVPB8Cd
# 执行LDIF文件
ldapadd -Y EXTERNAL -H ldapi:/// -f chrootpw.ldif
3、导入预设
# 执行LDIF文件
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/collective.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/corba.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/duaconf.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/dyngroup.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/java.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/misc.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/openldap.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/pmi.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/ppolicy.ldif
4、添加域
添加新的域 xielong.local,admin 管理员的密码是上面生成的
vim chdomain.ldif
# 内容
dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.base="cn=admin,dc=xielong,dc=local" read by * none
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=xielong,dc=local
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=admin,dc=xielong,dc=local
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}YzpdyJJBH3pNjXpQO7C/NvmWdxVPB8Cd
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=admin,dc=xielong,dc=local" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=admin,dc=xielong,dc=local" write by * read
# 执行LDIF文件
ldapmodify -Y EXTERNAL -H ldapi:/// -f chdomain.ldif
5、添加 memberof 功能
很多场景下,我们需要快速的查询某一个用户是属于哪一个或多个组的,memberOf 正是提供了这样的一个功能:如果某个组中通过 member 属性新增了一个用户,OpenLDAP 便会自动在该用户上创建一个 memberOf 属性,其值为该组的 dn。遗憾的是,OpenLDAP 默认并不启用这个特性,因此我们需要通过相关的配置开启它。
vim addmemberof.ldif
# 内容
dn: cn=module{0},cn=config
cn: modulle{0}
objectClass: olcModuleList
objectclass: top
olcModuleload: memberof.la
olcModulePath: /usr/lib64/openldap
dn: olcOverlay={0}memberof,olcDatabase={2}hdb,cn=config
objectClass: olcConfig
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: top
olcOverlay: memberof
olcMemberOfDangling: ignore
olcMemberOfRefInt: TRUE
olcMemberOfGroupOC: groupOfUniqueNames
olcMemberOfMemberAD: uniqueMember
olcMemberOfMemberOfAD: memberOf
vim refint1.ldif
# 内容
dn: cn=module{0},cn=config
add: olcmoduleload
olcmoduleload: refint
vim refint2.ldif
# 内容
dn: olcOverlay=refint,olcDatabase={2}hdb,cn=config
objectClass: olcConfig
objectClass: olcOverlayConfig
objectClass: olcRefintConfig
objectClass: top
olcOverlay: refint
olcRefintAttribute: memberof uniqueMember manager owner
# 执行LDIF文件
ldapadd -Q -Y EXTERNAL -H ldapi:/// -f addmemberof.ldif
ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f refint1.ldif
ldapadd -Q -Y EXTERNAL -H ldapi:/// -f refint2.ldif
6、添加Group People 2个组织单位和 admin 组织角色
vim base.ldif
# 内容
dn: dc=xielong,dc=local
objectClass: top
objectClass: dcObject
objectClass: organization
o: xielong Company
dc: xielong
dn: cn=admin,dc=xielong,dc=local
objectClass: organizationalRole
cn: admin
dn: ou=People,dc=xielong,dc=local
objectClass: organizationalUnit
ou: People
dn: ou=Group,dc=xielong,dc=local
objectClass: organizationalUnit
ou: Group
# 执行LDIF文件
ldapadd -x -D cn=admin,dc=xielong,dc=local -W -f base.ldif
7、在 Group 里面 添加 dev 和 ops 2个组
vim group.ldif
# 内容
dn: cn=ops,ou=Group,dc=xielong,dc=local
cn: ops
objectClass: top
objectClass: groupOfUniqueNames
uniqueMember:
dn: cn=dev,ou=Group,dc=xielong,dc=local
cn: dev
objectClass: top
objectClass: groupOfUniqueNames
uniqueMember:
# 执行LDIF文件
ldapadd -x -D cn=admin,dc=xielong,dc=local -W -f group.ldif
8、配置日志
mkdir -p /var/log/slapd
touch /var/log/slapd/slapd.log
chown -R ldap:ldap /var/log/slapd
vim /etc/syslog.conf
# 增加,在73行下面
local4.* /var/log/slapd/slapd.log
# 重启
systemctl restart rsyslog
vim log.ldif
# 内容
dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats
# 执行LDIF文件
ldapmodify -Y EXTERNAL -H ldapi:/// -f log.ldif
9、使用 Ldap Admin 客户端登陆
10、登陆成功后,能看到 已经创建好 dev 和 ops 2个 group
11、接着创建 zhangsan 和 lishi 2个用户 , 并把他们加入 dev 和 ops 组里面
12、验证 memberof 功能
ldapsearch -x -H ldap://10.3.0.210 -b dc=xielong,dc=local -D "cn=admin,dc=xielong,dc=local" -W memberOf
# 成功显示 memberOf
----
# zhangsan, People, xielong.local
dn: uid=zhangsan,ou=People,dc=xielong,dc=local
memberOf: cn=dev,ou=Group,dc=xielong,dc=local
# ops, Group, xielong.local
dn: cn=ops,ou=Group,dc=xielong,dc=local
# dev, Group, xielong.local
dn: cn=dev,ou=Group,dc=xielong,dc=local
# lishi, People, xielong.local
dn: uid=lishi,ou=People,dc=xielong,dc=local
memberOf: cn=ops,ou=Group,dc=xielong,dc=local
------
13、验证日志
cat /var/log/slapd/slapd.log
# 内容
Sep 8 00:27:10 10-3-0-210 slapd[22340]: conn=1003 op=183 SRCH base="uid=zhangsan,ou=People,dc=xielong,dc=local" scope=0 deref=0 filter="(objectClass=*)"
Sep 8 00:27:10 10-3-0-210 slapd[22340]: conn=1003 op=183 SEARCH RESULT tag=101 err=0 nentries=1 text=
Sep 8 00:27:10 10-3-0-210 slapd[22340]: conn=1003 op=184 SRCH base="uid=lishi,ou=People,dc=xielong,dc=local" scope=0 deref=0 filter="(objectClass=*)"
Sep 8 00:27:10 10-3-0-210 slapd[22340]: conn=1003 op=184 SEARCH RESULT tag=101 err=0 nentries=1 text=
Sep 8 00:27:10 10-3-0-210 slapd[22340]: conn=1003 op=185 SRCH base="uid=zhangsan,ou=People,dc=xielong,dc=local" scope=0 deref=0 filter="(objectClass=*)"
Sep 8 00:27:10 10-3-0-210 slapd[22340]: conn=1003 op=185 SEARCH RESULT tag=101 err=0 nentries=1 text=