主组id错误指用户primarygroupid属性与domain users组rid(513)不匹配,导致组策略失败、sysvol访问拒绝及netlogon共享不可见;需用set-aduser -replace @{primarygroupid="513"}修复并klist purge刷新令牌。
主组 id(primary group id)错误在 windows server 域环境中较隐蔽,但会导致用户看似登录成功,却无法访问共享、应用组策略、读取 sysvol,甚至出现“该帐户无权从此工作站登录”等报错。这类问题不常由密码或账户禁用引发,而是源于 active directory 中用户对象的 primarygroupid 属性与实际所属主组(通常是 domain users)的 rid 不匹配。
确认主组 ID 是否异常
域用户默认主组是 Domain Users,其 RID 为 513。若被意外修改(例如通过 LDIF 导入、PowerShell 脚本误操作或第三方工具),就会破坏权限继承链。
- 使用 PowerShell 检查目标用户主组: Get-ADUser username -Properties primaryGroupID | Select Name, primaryGroupID
- 对比 Domain Users 组的 SID 后缀: (Get-ADGroup "Domain Users").SID.Value —— 应以 -513 结尾
- 若返回值不是 513(如 512、518 或其他非标准值),即为主组 ID 错误
检查是否影响关键系统行为
主组 ID 错误会干扰多个底层机制:
- 组策略处理失败:Userenv 事件日志中可能出现“无法打开组策略对象”“拒绝访问”或“系统找不到指定路径”,尤其影响对 SYSVOLdomainPolicies 的读取
- 文件服务器访问受限:即使用户明确被授予 NTFS 权限,若未通过主组继承 Domain Users 的默认访问令牌,也可能被拒绝
- Netlogon 共享不可见:用户无法映射 \domain etlogon,因为客户端构造安全令牌时依赖 primaryGroupID 构建组 SIDs 列表
修复主组 ID 并验证效果
修复必须通过 AD 管理工具直接写入属性,不能仅靠“添加到 Domain Users 组”来弥补。
- 使用 PowerShell 强制重置(需域管理员权限): Set-ADUser username -Replace @{primaryGroupID="513"}
- 立即清除本地 Kerberos 缓存,避免旧令牌干扰: klist purge(在用户登录会话中运行)
- 重启工作站或注销重登录,使新令牌生效
- 验证修复后行为: ✓ 能正常访问 \domain etlogon 和 \domainsysvol ✓ 组策略更新日志(Event ID 1030/1058)不再报错 ✓ whoami /groups 输出中包含 “DOMAINDomain Users” 且标记为 Primary Group
预防类似问题发生
主组 ID 是只读属性,在 GUI 界面中不可编辑,因此异常几乎都来自脚本或低层工具操作。
- 禁用非必要场景下的 primaryGroupID 写权限:在 Domain Users 组的 ACL 中,移除非管理员账户的“写入 primaryGroupID”权限
- 批量操作前先导出用户当前属性: Get-ADUser username -Properties * | Export-Csv backup.csv
- 避免使用 dsmod user 或 LDIF 直接修改主组;优先用 Set-ADUser -MemberOf 管理组成员关系











