16.6. 同步组

与用户条目一样,组不会在 Directory 服务器和 Active Directory 之间自动同步。必须配置同步这两个指令:
  • 如果在同步协议中通过选择 Sync New Windows Groups 选项,则 Active Directory 域中的组会被同步。在同步启动时,所有 Windows 组都会复制到目录服务器中,然后在创建时同步新组。
  • Directory Server 组帐户通过 Directory Server 条目中存在的特定属性与 Active Directory 同步。任何目录服务器条目都必须具有 ntGroup 对象类和 ntGroupCreateNewGroup 属性;ntGroupCreateNewGroup 属性(即使在一个现有的条目中)会向目录服务器 Windows 同步发送信息,将条目写入 Active Directory 服务器。
    在下次常规更新时,创建并同步了 ntGroup 对象类的新或修改的组。
重要
同步组时,也会同步其所有成员的列表。但是,除非启用了用户同步并应用到这些条目,否则成员条目本身不会被同步。
如果某些用户不存在,当应用程序或服务试图对 Active Directory 服务器上的所有成员都执行操作时,可能会造成问题。
另外,组还有几个其他通用属性:
  • 两个属性控制是否在 Active Directory、ntGroupCreateNewGroupntGroupDeleteGroup 上创建和删除 Directory Server 组。
    需要 ntGroupCreateNewGroup 将目录服务器组同步到 Active Directory。
  • ntUserDomainId 包含 Active Directory 域中条目的唯一 ID。这是 ntGroup 对象类的唯一必需属性。
  • ntGroupType 是 Windows 组的类型。Windows 组类型是 global/security、domain local/security、builtin、generic/security、global/distribution、domain local/distribution 或 Universal/distribution。这为同步的 Windows 组自动设置,但必须在 Directory Server 条目上手动设置这些属性,然后才能同步。

16.6.1. 关于 Windows 组类型

在 Active Directory 中,有两个主要的组类型:安全性和分发。安全组与目录服务器中的组最相似,因为安全组可以针对访问控制、资源限制和其他权限配置策略。分发组用于邮件分发。它们进一步分为全局和本地组。Directory Server ntGroupType 支持所有四个组类型:
  • -2147483646 用于全局/安全(默认)
  • -2147483644 用于域本地/安全
  • -2147483643 用于内置
  • -2147483640 用于 universal/security
  • 2 代表全局/发布
  • 4 用于域本地/发布
  • 8 用于通用/发布

16.6.2. 目录服务器和 Active Directory 之间的组属性

只有 Directory 服务器和 Active Directory 的部分属性会同步。这些属性是硬编码的,无论条目同步的方式是什么。条目中存在的任何其他属性(在 Directory Server 或 Active Directory 中)均不受同步的影响。
Directory 服务器和 Active Directory 组条目中使用的一些属性是相同的。它们通常是在 LDAP 标准中定义的属性,在所有 LDAP 服务间都很常见。这些属性会完全同步到另一个属性。表 16.4 “组条目属性,其在 Directory 服务器和 Active Directory 之间是相同的” 显示 Directory 服务器和 Windows 服务器之间是相同的属性。
有些属性会定义相同的信息,但属性的名称或其架构定义有所不同。这些属性在 Active Directory 和 Directory Server 之间映射,因此一个服务器上的属性 A 被视为另一个服务器中的属性 B。对于同步,许多与 Windows 特定信息相关的属性。表 16.3 “目录服务器和 Active Directory 之间的组条目属性映射” 显示目录服务器和 Windows 服务器之间映射的属性。
有关 Directory 服务器和 Active Directory 处理某些架构元素的方式差异的更多信息,请参阅 第 16.6.3 节 “Red Hat Directory Server 和 Active Directory 之间的组架构差异”

表 16.3. 目录服务器和 Active Directory 之间的组条目属性映射

目录服务器 Active Directory
cn name
ntUserDomainID name
ntGroupType groupType
uniqueMember
成员
成员[a]
[a] Active Directory 中的 Member 属性与 Directory 服务器中的 uniqueMember 属性同步。

表 16.4. 组条目属性,其在 Directory 服务器和 Active Directory 之间是相同的

cn o
description ou
l seeAlso
mail

16.6.3. Red Hat Directory Server 和 Active Directory 之间的组架构差异

虽然 Active Directory 支持与目录服务器相同的基本 X.500 对象类,但管理员应该了解哪些不兼容性。
支持嵌套组(其中组包含另一个组作为成员),并且同步 Windows 同步。但是,Active Directory 将某些约束设置为嵌套组组成。例如,不允许全局组包含域本地组作为成员。目录服务器没有本地和全局组的概念,因此可以在目录服务器侧创建条目,在同步时违反 Active Directory 的限制。

16.6.4. 为目录服务器组配置组同步

要使 Directory 服务器组与 Active Directory 同步,组条目必须设置适当的同步属性。
要通过命令行启用同步,请将所需的同步属性添加到条目中,或使用这些属性创建条目。
同步需要三个模式元素:
  • ntGroup 对象类。
  • ntUserDomainId 属性,为该条目提供 Windows ID。
  • ntGroupCreateNewGroup 属性向同步插件发出信号,以将目录服务器条目同步到 Active Directory。
    ntGroupDeleteGroup 属性是可选的,但如果在 Directory Server 中删除,这会设置是否从 Active Directory 域自动删除该条目。
另外,还建议添加 ntGroupType 属性。如果没有指定此属性,则组会自动添加为全局安全组(ntGroupType:-2147483646)。
例如,使用 ldapmodify
# ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x

dn: cn=Example Group,ou=Groups,dc=example,dc=com
changetype: modify
add: objectClass
objectClass:ntGroup
-
add: ntUserDomainId
ntUserDomainId: example-group
-
add: ntGroupCreateNewGroup
ntGroupCreateNewGroup: true
-
add: ntGroupDeleteGroup
ntGroupDeleteGroup: true
-
add: ntGroupType
ntGroupType: 2
很多额外的 Windows 和组属性可以添加到条目中。同步的所有模式都在 第 16.6.2 节 “目录服务器和 Active Directory 之间的组属性” 中列出。属于 ntGroup 对象类的特定于 Windows 的属性在 Red Hat Directory Server 11 配置、命令和文件参考 中进行了更详细的描述。

16.6.5. 为活动目录组配置组同步

Windows 用户的同步(源自 Active Directory 域的用户)是在同步协议中配置。
启用组同步:
# dsconf -D "cn=Directory Manager" ldap://server.example.com repl-winsync-agmt set --sync-groups="on" --suffix="dc=example,dc=com" example-agreement
要禁用组同步,可将 --sync-groups 选项设置为 off