ldapsearch -LLL -H ldap://adserver.example.com -x -D someuser@example.com -w somepass -b 'OU=Users,DC=example,DC=com' '(&(objectClass=person)(sAMAccountname=testuser))'
我明白了
dn: CN=TestUser Surname,OU=Area,OU=Users,DC=com...objectClass: person...cn: TestUser Surnamesn: Surname...distinguishedname: CN=TestUser Surname,DC=com...memberOf: CN=Group1,DC=commemberOf: CN=Gropu2,DC=com...sAMAccountname: testuser
我想仅在testuser属于名为X的组时才获得响应,而不管组X在AD层次结构中的位置.例如:我想要一个名为testuser的用户的数据,该用户是名为Group1的组的成员.
我尝试将过滤器更改为:
>(&(objectClass = person)(sAMAccountname = testuser)(memberOf = CN = Group1 *))
>(&(objectClass = person)(sAMAccountname = testuser)(memberOf = * Group1 *))
无济于事.
您可以从上面的输出中看到,testuser属于这些组
> CN = Group1,OU = Area,OU = Users,DC = example,DC = com
> CN = Gropu2,OU =用户,DC =示例,DC = com.
当我使用过滤器'(&(objectClass = person)(sAMAccountname = testuser)(memberOf = CN = Group1,DC = com))’它有效,但我需要仅包含组名的查询(不使用完整的“路径”).
有什么办法吗?
我正在尝试这样做,因为我需要使用Active Directory定义的组作为squID(linux代理)ACL.为此,我需要定义一个外部ACL类型,如
external_acl_type ADGroup %LOGIN /usr/lib64/squID/squID_ldap_group -R -b "OU=Users,DC=com" -D someuser@example.com -w somepass -f "(&(objectclass=person)(sAMAccountname=%u)(memberof=CN=%g,DC=com))" -h adserver.example.com
然后使用该类型定义ACL,例如this
acl ADGroup_Group1 external ADGroup Group1acl ADGroup_Group2 external ADGroup Group2...http_access allow ADGroup_Group1;http_access deny ADGroup_Group2;
当squID检查此“允许”时,它将使用用户登录名替换%u,并使用ACL(Group1,Group2)中定义的组名替换%g,然后在上面进行LDAP查询.
从上面可以看到“http_access允许ADGroup_Group1;”将按预期工作,但“http_access拒绝ADGroup_Group2;”因为Group1和Group2的父OU不同,所以不起作用.
所以我有3个选择:
>找到适用于任何组名的过滤器,无论路径如何(此问题)
>将(可能)所有AD组移动到同一个OU(呃…将对象移动到不同的OU将为我带来更多工作,因为我必须重新调整GPO – 或者至少检查已定义的GPO以进行任何更改王动可带来)
>为每个具有组的OU定义(可能)一个external_acl_type. (在这种情况下,我将只有N个外部进程来检查LDAP过滤器中的路径更改)
出于这个原因,用户对象的memberOf属性是DN列表(可分辨名称或完整X.500路径).
总结以上是内存溢出为你收集整理的linux – ldapquery属于名为X的组的用户的Active Directory服务器全部内容,希望文章能够帮你解决linux – ldapquery属于名为X的组的用户的Active Directory服务器所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)