Centos 7 Openldap利用memberof属性动态管理用户主机访问权限

1、在Openldap服务器端上加载memberof模块

[root@node3 ~]# vim add_module_group.ldif 
dn: cn=module,cn=config
cn: module
objectClass: olcModuleList
olcModulePath: /usr/lib64/openldap

dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: memberof.la

[root@node3 ~]# vim add_group_objectClass.ldif 
dn: olcOverlay=memberof,olcDatabase={2}hdb,cn=config
objectClass: olcConfig
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: top
olcOverlay: memberof
olcMemberOfDangling: ignore
olcMemberOfRefInt: TRUE
olcMemberOfGroupOC: groupOfUniqueNames                        #由centos 6 的groupOfNames 变更为了centos 7的groupOfUniqueNames
olcMemberOfMemberAD: uniqueMember                            #centos 6用户的属性的名称从member变成了uniqueMember
olcMemberOfMemberOfAD: memberOf

[root@node3 ~]# ldapadd -Q -Y EXTERNAL -H ldapi:/// -f add_module_group.ldif
[root@node3 ~]# ldapadd -Q -Y EXTERNAL -H ldapi:/// -f add_group_objectClass.ldif

2、添加主机架构及添加相应的主机组

[root@node3 ~]# vim add_unique_group.ldif 
dn: ou=host,dc=ldaptest,dc=com,dc=cn
ou: host
objectClass: organizationalUnit
objectClass: top

dn: cn=db,ou=host,dc=ldaptest,dc=com,dc=cn
objectClass: top
objectClass: groupOfUniqueNames
cn: db
uniqueMember: uid=devin,ou=people,dc=ldaptest,dc=com,dc=cn

dn: cn=tomcat,ou=host,dc=ldaptest,dc=com,dc=cn
objectClass: top
objectClass: groupOfUniqueNames
cn: tomcat
uniqueMember: uid=charles,ou=people,dc=ldaptest,dc=com,dc=cn
uniqueMember: uid=tyler,ou=people,dc=ldaptest,dc=com,dc=cn

[root@node3 ~]# ldapadd -x -D cn=admin,dc=ldaptest,dc=com,dc=cn -W -f add_unique_group.ldif

配置完成后再Openldap服务端执行下述语句应能正常查询到相应的memberOf属性。

[root@node3 ~]# ldapsearch -x -LLL -H ldap:/// -D cn=admin,dc=ldaptest,dc=com,dc=cn -W -b uid=charles,ou=people,dc=ldaptest,dc=com,dc=cn memberOf
Enter LDAP Password: 
dn: uid=charles,ou=people,dc=ldaptest,dc=com,dc=cn
memberOf: cn=tomcat,ou=host,dc=ldaptest,dc=com,dc=cn

3、配置Centos 7 ldap客户端仅允许指定的主机组用户登录访问

#在/etc/nslcd.conf文件末尾添加下述过滤条件,表示匹配主机组db下的用户
[root@localhost ~]# vim /etc/nslcd.conf 
filter passwd (memberOf=cn=db,ou=host,dc=ldaptest,dc=com,dc=cn)

[root@localhost ~]# systemctl restart nslcd

重启完nslcd服务后,此时该客户端仅能允许获取到主机组db 下的用户信息,因此仅允许该部分用户登录到该系统。

你可能感兴趣的:(Centos 7 Openldap利用memberof属性动态管理用户主机访问权限)