Active Directory 允许的对象的最大长度

2025-09-18 18:57:00
丁国栋
原创 6
摘要:Active Directory 允许的对象的最大长度。

Active Directory 允许的对象的最大长度是多少?官方是如何定义的?比如一个主机名或一个FQDN规范名称的对象。 这是一个非常具体且重要的问题,特别是在进行 Active Directory 规划和故障排除时。

核心摘要

Active Directory 中对象名称(如计算机名、用户登录名等)的最大长度通常为 64 个字符。然而,当这些名称用于构成更复杂的路径(如 Distinguished Name)或与网络服务(如 DNS)结合时,会受到其他限制。

官方定义主要来源于 Microsoft 的协议规范,而不是图形界面(GUI)或常用工具的限制。


1. 官方定义与规范

Active Directory 的架构和约束主要遵循 LDAP(轻量级目录访问协议) 标准以及 Microsoft 的实现。关键定义来自:

最重要的两个概念是:

  • RDN (Relative Distinguished Name):对象本身的名称,例如 CN=MyVeryLongComputerNameThatIsApproachingTheLimit
  • DN (Distinguished Name):对象的完整路径,例如 CN=MyComputer, OU=MyOU, DC=contoso, DC=com

a) RDN (对象名称本身) 的最大长度

  • 官方限制: 64 个字符
  • 来源: 这是由 Active Directory 架构中 ntdsapi.h 头文件定义的 AZ_MAX_OBJECT_NAME_LEN 常量。
  • 影响范围: 这个限制适用于:
    • 计算机名 (CN)
    • 用户名 (CN)
    • 组织单位名 (OU)
    • 组名 (CN)
    • 以及其他所有对象类的通用名称 (CN) 部分。

这意味着,当你创建一台计算机或一个用户时,其名称(如 MyComputer)不能超过 64 个字符。

b) DN (可分辨名称/完整路径) 的最大长度

  • 官方限制: 255 个字符
  • 来源: 同样由 ntdsapi.h 中的 AZ_MAX_SCRIPT_STRING_LEN 常量定义。
  • 影响范围: 这是整个 DN 字符串的总长度限制。例如,一个深层次 OU 结构中的长名称对象可能会接近此限制。 CN=ShortName, OU=VeryLongOrganizationalUnitNameHere, OU=AnotherLongOU, DC=domain, DC=com

2. 主机名 (Hostname) 和 FQDN (完全限定域名) 的特殊情况

这是一个容易混淆的点,因为它涉及两个系统的交集:Active DirectoryDNS

a) 主机名 (NetBIOS 名称)

  • 最大长度: 15 个字符
  • 原因: 这是为了与旧的 NetBIOS 命名协议保持兼容。第 16 个字符被操作系统保留,用于标识服务类型(如工作站、域控制器等)。
  • 即使 AD 对象名允许 64 个字符,当你将此对象用作一台“计算机”时,其主机名(在网络中可见的名称)仍然会被截断为 15 个字符。 这是最佳实践和强制的兼容性要求。

b) FQDN (完全限定域名)

  • 最大长度: 255 个字符(包括所有点和标签)。
  • 每个标签的最大长度(如 “hostname”、“domain”、“com”): 63 个字符
  • 原因: 这是由 DNS 标准 (RFC 1034, RFC 1035) 定义的,与 Active Directory 本身无关。但由于 AD 严重依赖 DNS 进行定位和服务发现,因此必须遵守此规则。

总结与实践指南

对象/概念 最大长度 约束来源 示例与说明
AD 对象名 (RDN) 64 字符 Active Directory (LDAP) 在 ADUC 中创建用户或计算机时,名称最长 64 字符。
AD 对象完整路径 (DN) 255 字符 Active Directory (LDAP) CN=Name,OU=... 整个字符串的长度。
计算机主机名 15 字符 NetBIOS 兼容性 实际的网络主机名 (computername)。AD 中 64 字符的名称会被截断。
DNS 标签 63 字符 DNS 标准 (RFC 1035) FQDN 中每个点之间的部分(如 hostname, domain)。
完整 FQDN 255 字符 DNS 标准 (RFC 1035) hostname.domain.com 整个字符串的长度。

最重要的实践建议:

  1. 命名计算机时,始终使用不超过 15 个字符的名称。 这是最安全、兼容性最好的做法。如果你在 AD 中创建了一个 20 字符的计算机账户,其主机名实际上只会是前 15 个字符,这会导致混乱和潜在的管理问题。
  2. 为用户、组和 OU 命名时,虽然可以长达 64 字符,但出于可读性和可管理性考虑,也应保持名称简洁明了。
  3. 设计 OU 结构时,避免使用过长的 OU 名称和过深的层级,以防 DN 总长度接近 255 字符的限制,这可能影响某些脚本或应用程序的处理。

因此,官方定义来源于 LDAP 协议和 Microsoft 的实现常量,但实际应用中必须考虑与 DNS 和 NetBIOS 的历史兼容性约束。

发表评论
博客分类