本教程相关 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=