如何使用libwbclient递归查询用户AD组?是否必须用LDAP?
如何通过Winbindd获取AD用户的所有嵌套组
不需要非得用LDAP来递归查询,Winbind本身就提供了工具和API来获取包含嵌套关系的完整用户组列表,下面是具体的解决办法:
用
wbinfo命令行快速验证
直接用带嵌套参数的命令就能列出用户所有所属组:wbinfo --user-domgroups --nested <username>也可以先获取用户SID再查询:
# 获取用户SID wbinfo -n <username> # 通过SID查询所有组(含嵌套) wbinfo -s <user-sid>调用Winbind的专用API替代
wbcLookupSids()
别再单独调用wbcLookupSids()来逐个查组了,改用wbcGetGroupsUser()函数——这个API会直接返回用户所属的所有组(包括通过组嵌套继承的间接组)。另外wbcLookupNames()在查询用户时,返回的结果里也会包含完整的关联组SID列表,前提是你开启了嵌套组支持。确保Winbind启用嵌套组解析
检查smb.conf配置文件,确认以下参数设置正确:winbind nested groups = yes默认这个选项可能是关闭的,开启后Winbind才会自动递归解析AD中的组嵌套关系,相关工具和API才能返回完整的组列表。
如果按照上面的步骤配置和调用后还是拿不到完整的组列表,再考虑用LDAP直接查询AD的方式,但优先用Winbind自带的能力,它已经封装了AD组关系的解析逻辑,不用自己造轮子写递归查询代码。
内容的提问来源于stack exchange,提问作者Aron
相关产品推荐
相关产品推荐

