LDAP& Active Directory导致缺少某些结果的字段

时间:2008-11-13 01:23:57

标签: active-directory ldap

当使用LDAP查询我们的Active Directory结构以查找用户帐户时,某些记录(但不是全部)缺少某些关键字段,特别是memberOf和userAccountControl(其中有一个位标志,指示帐户是否已禁用) )。

以下是一些提炼细节:

  • 如果查询设置为过滤任何 那些领域(比如获得一个 中的非禁用帐户列表 营销部门小组),他们 从结果集中消失(因为 就AD来说,他们是 失踪)。

  • 如果执行查询 拥有高权限域名 管理员帐户,查询工作正常 细

  • 有问题的记录约占总用户记录的1/4 - 1/3。大多数似乎是更新的记录(我们认为它可能与在域控制器服务器上升级到2003有关),尽管一些较旧的记录似乎也受到了影响。

    < / LI>
  • 粗略查看两个类似的记录,其中一个记录可以通过任何帐户查看,另一个记录不会显示任何明显的差异。

所以我最好的猜测是有某种权限拒绝设置(可能在模式级别?),这使得某些字段受到限制。我应该注意,域管理员永远不会故意设置任何此类权限。

更新/解决方案: ADSI Edit(在Windows 2003 Support Tools中)帮助我将其归结为Authenticated User角色的默认权限更改。对于某些人来说,该角色包含读取帐户限制(包含userAccountControl)和读取组成员身份(memberOf),而其他人则没有。

差异的原因仍然不明确,尽管大多数“坏”记录是在切换到域控制器的Windows 2003之后创建的,这可能是一个因素。

解决方案:这仍然有点未定,但最有可能是更新的组策略,再加上更新现有帐户的脚本。

2 个答案:

答案 0 :(得分:3)

您可以使用adsi编辑检查特定用户的特定字段的权限。不知何故,必须更改,您必须将它们恢复为默认值。也许他们在一些用户的ou级别中发生了变化。在这种情况下,您可以批量修复它们。

答案 1 :(得分:0)

有趣的是,您建议的两个属性都是只读的。成员(组中的属性)在Active Directory中维护。 User上的MemberOf值是基于查询计算的,并不实际静态存储在用户对象上。

我非常确定userAccountControl也是一个只读属性,通过LDAP。 (需要其他方法来直接操纵它。)。

不确定这是否有帮助,但可能是正确方向的暗示。 (或者完全错误..)