CentOS 7加入Active Directory域后自动组配置问题咨询
解决CentOS 7.4加入AD域后
getent group无法获取用户对应组的问题 你已经完成了AD域的基础接入,SSSD也能正常运行,但因为AD里没给每个用户创建对应组,只配置了POSIX属性,导致getent group拿不到用户对应的组信息。我给你几个针对性的调整方案:
1. 调整SSSD配置,映射用户POSIX GID为虚拟组
编辑/etc/sssd/sssd.conf里你的AD域配置段(比如[domain/your-domain.com]),添加或修改以下参数:
# 指定用用户的gidNumber字段作为主组标识 ldap_user_primary_group = gidNumber # 适配AD的POSIX属性,配置组成员的映射规则 ldap_group_member = memberUid # 可选:当用户gidNumber缺失时的兜底默认GID,根据你的环境设置数值 override_gid = 5000 # 关闭嵌套组,避免无组对象场景下的查询冲突 ldap_enable_nested_groups = false
修改完一定要修正配置文件权限(SSSD对权限要求严格,否则服务无法启动):
chmod 600 /etc/sssd/sssd.conf
2. 重启SSSD并清除缓存
配置生效需要重启服务,同时清除旧缓存避免干扰:
systemctl restart sssd sss_cache -E
3. 确认NSS配置包含SSSD
检查/etc/nsswitch.conf里的group配置行,确保包含sss,这样系统才会通过SSSD查询AD的组信息:
group: files sss
4. 测试验证
现在可以用两种方式验证效果:
- 直接查询用户对应的GID:
getent group <用户的gidNumber>(比如getent group 10001) - 查询用户的完整组信息:
id <AD用户名>,看输出里的组信息是否正常显示
原理说明:因为AD中没有创建与用户gidNumber对应的组对象,SSSD会通过配置的规则,将用户的POSIX gidNumber映射为一个虚拟组条目,这样getent group就能识别并返回对应的组信息了。
内容的提问来源于stack exchange,提问作者doneal24




