LDAP添加 memberOf 模块

ldap的group是一种单独的类型objectClass: groupOfNames, 有个字段叫做member, value就是entry的dn。如此,实现了group-user的映射关系。

我们可以通过group来查询member,然而,并不能通过user直接获取到group。这在配置第三方系统的时候,没办法做group认证,比如airflow要求输入group filter, 默认通过memberof的属性值来获取group。gitlab如果要做分组进行登录限制要求输入 memberof 的属性值来获取 group。所以,理论上user应该有个字段叫做memberof,value是group。

大家可能会觉得dn已经很明显的分组了好吧,为啥还要这么复杂。事实上,ldap也提供了Reverse Group Membership Maintenance.由系统来维护二者的映射关系。即

  • group添加member的时候会自动给对应的entry添加memberof字段

  • 当删除entry的时候,也会从group里删除member字段


添加 memberOf 模块

添加 add_module_group.ldif 文件 在不知道memberof.la文件在什么位置时(find / -name memberof.la)

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

应用ldap 配置

ldapadd -Q -Y EXTERNAL -H ldapi:/// -f  add_module_group.ldif

添加 add_group_objectClass.ldif 文件,增加 objectClass 支持

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

应用 ldap 配置

ldapadd -Q -Y EXTERNAL -H ldapi:/// -f add_group_objectClass.ldif

新增 groupOfNames类型的组,add_group.ldif

dn: cn=gitlab-users,ou=Groups,dc=magic,dc=com
objectClass: groupOfNames
cn: gitlab-users
member: uid=xxx,ou=Users,dc=magic,dc=com

创建组

ldapmodify -a -H ldap://192.168.1.69:389 -D "cn=manager,dc=magic,dc=com" -w root123 -f addgroup.ldif

查看组

ldapsearch -H ldapi:/// -x -D "cn=manager,dc=magic,dc=com" -w root123 -b "ou=Groups,dc=magic,dc=com"
# gitlab-users, Groups, magic.com
dn: cn=gitlab-users,ou=Groups,dc=magic,dc=com
objectClass: groupOfNames
cn: gitlab-users
member: uid=xxx,ou=Users,dc=magic,dc=com

再来查看entry是否添加了memberof, ldapsearch当不指定字段的时候,默认返回全部强制字段,memberof不属于强制,需要单独指明

ldapsearch -H ldapi:/// -x -D "cn=manager,dc=magic,dc=com" -w root123 -b "ou=Users,dc=magic,dc=com" "(|(cn=xxx)(cn=gitlab*))" memberof

# extended LDIF
#
# LDAPv3
# base <ou=Users,dc=magic,dc=com> with scope subtree
# filter: (|(cn=xxx)(cn=gitlab*))
# requesting: memberof 
#

# xxx, Users, magic.com
dn: uid=xxx,ou=Users,dc=magic,dc=com
memberOf: cn=gitlab-users,ou=Groups,dc=magic,dc=com

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

完成

ldap添加用户的命令可以使用ldapadd命令来实现。通过ldapadd命令,可以向LDAP服务器添加新的用户。具体的命令格式如下所示: ldapadd -x -c -W -D "管理员账号" -f ldif文件路径 其中,-x参数表示使用简单认证方式,-c参数表示在执行过程中出现错误时继续执行,-W参数表示在执行命令时需要输入管理员账号的密码,-D参数指定管理员账号的DN(Distinguished Name),-f参数指定包含用户信息的ldif文件的路径。 举个例子,假设我们要添加一个名为XiaoMing的用户,设置其家目录为/home/xiaoming,管理员账号为admin,密码为password,那么具体的命令如下: ldap***user.ldif文件包含了用户的信息,其中包括了用户的DN以及其他属性的设置。 请注意,执行ldapadd命令之前,需要确保已经正确配置了LDAP服务器和管理员账号的权限。同时,ldif文件中的用户信息也需要按照LDAP服务器的要求进行正确填写。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [LDAP系列二创建用户](https://blog.csdn.net/xyy511/article/details/90521086)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Ldap添加新用户](https://blog.csdn.net/zhxue123/article/details/7481180)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值