7

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

以下是一些精炼细节:

  • 如果查询设置为过滤这些字段中的任何一个(例如获取营销部门组中未禁用帐户的列表),它们将从结果集中消失(因为就 AD 而言,它们丢失了) .

  • 如果使用高权限域管理员帐户执行查询,则查询工作正常。

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

  • 粗略查看两条相似的记录,一条其整个记录可供任何帐户查看,另一条不显示任何明显差异。

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

更新/解决方案: ADSI 编辑(在Windows 2003 支持工具中)帮助我将其归结为对经过身份验证的用户角色的默认权限的更改。对于某些人来说,该角色包含读取帐户限制(其中包含 userAccountControl)和读取组成员资格 (memberOf),而对于其他人则没有。

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

解决方案: 这仍然有点不确定,但很可能是更新的组策略,结合脚本来更新现有帐户。

4

2 回答 2

3

您可以通过 adsi edit 查看特定用户的特定字段的权限。必须以某种方式更改它们,您必须将它们恢复为默认值。也许他们在某些用户的 ou 级别发生了变化。在这种情况下,您可以批量修复它们。

于 2008-11-19T18:03:25.267 回答
0

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

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

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

于 2008-11-20T17:45:11.917 回答