一,背景:
openldap版本 2.4.44
二,注意事项
所有涉及的配置文件的行开头不准有空格,凡是首行带有空格的均默认是上一行的continuous!
三,配置开始
1,编辑第一个ldif文件(名字随意,后缀必须要有ldif,我就命名为memberof_config.ldif),文件内容如下
[root@localhost ~]# cat memberof_config.ldif
dn: cn=module,cn=config
cn: module
objectClass: olcModuleList
olcModuleLoad: memberof
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
注意:
2,用这个文件执行ldapadd命令
[root@localhost ~]# ldapadd -Q -Y EXTERNAL -H ldapi:/// -f memberof_config.ldif
3,编辑第二个文件(命名规则同上,我就命名为refint1.ldif)
[root@localhost ~]# cat refint1.ldif
dn: cn=module{0},cn=config
add: olcmoduleload
olcmoduleload: refint
注意:
4,用这个文件执行ldapmodify命令
[root@localhost ~]# ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f refint1.ldif
5,编辑第三个文件(我就命为refint2.ldif)
[root@localhost ~]# cat refint2.ldif
dn: olcOverlay={1}refint,olcDatabase={2}hdb,cn=config
objectClass: olcConfig
objectClass: olcOverlayConfig
objectClass: olcRefintConfig
objectClass: top
olcOverlay: {1}refint
olcRefintAttribute: memberof member manager owner
注:
6,用这个文件执行ldapadd命令
[root@localhost ~]# ldapadd -Q -Y EXTERNAL -H ldapi:/// -f refint2.ldif
7,最后自己看成功三个地方都可以看
8,要使用这个模块,创建的组的objectClass必须不能有organizationUnit对象!!(后期我会补充关于Group组和People组的创建,以及用户的导入)
9,修改管理员用户的密码,当然也可以把管理员自己都换了
照样编写一个.ldif结尾的文件,名字随意,我这边就叫base_modify.ldif文件
文件内容如下:
[root@localhost ~]# cat base_modify.ldif
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=root,dc=iiii,dc=com
-
replace: olcSuffix
olcSuffix: dc=iiii,dc=com
add: olcRootPW
olcRootPW: {MD5}tkLGExHYdHu9pf8gGqu3PA==
#dn就表示修改这个数据库的config文件,
#changetype: modify 指的就是修改的类别是什么,默认一般都是modify,重点在下面
#replace: olcRootDN replace表示替换,olcRootDN表示已有的属性的属性名,连起来就是说我要该olcRootDN的值内容,而这个属性的值就是管理员账户信息了
#olcRootDN: cn=root,dc=iiii,dc=com 这一整句就是表示这个olcRootDN的新值
#- 这可以不用理会,可以理解为空行的意思,表示后面还有要改的属性信息
#后面两个我就不解释了
#多讲几句。 如果没有这个属性值,就'replace'改成'add'; 如果要删除这个属性值,就要把'replace'改成'delete',其它都可以不用动。
注:olcRootPW这个属性值,表示的就是管理员密码的意思,在新安装的openldap上是没的哦,需要用add加上去,然后这个值是哪来的呢!
只要在命令行执行 slappasswd -s "<自己想要的密码>" -h {MD5} 这个命令就可以得到输出结果,然后粘贴上去即可,-s 后面跟的是你自己想要的密码形成的字符串,小编就是用 slappasswd -s "xiaobianshishuaige" -h {MD5} 得到的自己以MD5加密的密码。
10.然后执行这个命令:
[root@localhost ~]# ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f base_modify.ldif
执行完要验证一下是否改好了,只要去看这个数据文件就看可以了:
[root@localhost ~]# cat /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif
# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 1a5424d3
dn: olcDatabase={2}hdb
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcDbDirectory: /var/lib/ldap
olcDbIndex: objectClass eq,pres
olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
structuralObjectClass: olcHdbConfig
entryUUID: f879f160-957b-1039-8fad-9352f8b94ecf
creatorsName: cn=config
createTimestamp: 20191107072842Z
olcRootDN: cn=root,dc=iiii,dc=com
olcSuffix: dc=iiii,dc=com
olcRootPW:: e01ENX1YZ1hGS202RVhFS0pCODJTR2lxazJ3PT0=
entryCSN: 20191108033129.356295Z#000000#000#000000
modifiersName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
modifyTimestamp: 20191108033129Z
注意看自己配置文件中指定的属性名后面的值都有没有变成自己想要的就可以了。执行完就可以了,如果遇到错误,自行百度,或者留言都可以,小编有空会看哦。
11,新建两个组,一个叫Group ,一个叫People,不要问为什么,建好,就算全部基础配置完成了,建的组都可以放在group下,人都可以放在people下。
建的方式同样要再新建一个以.ldif结尾的文件,如下:
[root@localhost ~]# cat base_group.ldif
dn: ou=People,dc=iiii,dc=com
ou: People
objectClass: top
objectClass: organizationalUnit
dn: ou=Group,dc=iiii,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit
12,然后执行这个命令就好了
[root@localhost ~]# ldapadd -x -D "cn=root,dc=iiii,dc=com" -f base_group.ldif -W
Enter LDAP Password:
输入密码,文件内容没错误就可以创建完成了。-D 后面的一串字符串就是我们之前指定的管理用户的用户名。密码就是你之前用命令创建过加密字符的 -s参数后面跟的字符串了。
可以用slapcat查看是否创建出了两个组。基础都给说明了,后面创建人和创建有memberof属性的信息的数据就看第二个连接吧,基本已经都OK的。
以上信息的总结均来自于以下的网址中的作者的贡献,感谢:(建议读者依次查看)
第一个:https://segmentfault.com/a/1190000014683418?utm_source=tag-newest
第二个:https://www.jianshu.com/p/a33d5305ba5b
第三个:https://www.cnblogs.com/kevingrace/p/5773974.html