ID 范围
本地范围与每个信任域的范围如何决定 uid 和 gid,范围类型的含义,AD 用户的 uid 如何从 SID 算出,以及范围建立后不能随意修改的原因。
本页说明 IPA Server 下的 ID ranges 页面。ID 范围定义 uid 和 gid 从哪个区间分配。本地用户从本地范围顺序取号;AD 用户不在目录里,uid 由信任范围按 SID 计算,因此每台 Linux 主机看到的数字一致。

自带的范围
| 范围 | 类型 | 说明 |
|---|---|---|
<REALM>_id_range | 本地域范围 | 安装时随机取一段 200000 个 ID(示例 60000 到 261999),所有 IPA 用户和组从这里分配。起始随机是为了多个 IPA 域合并时不冲突 |
<REALM>_subid_range | 从属 ID 范围 | 供从属 ID使用,2147483648 起 |
<AD 域>_id_range | AD 信任范围 | 建立信任时自动创建,200000 个 ID,每个受信任的 AD 域一条 |
从属 ID 范围在 IPA 内部按 AD 信任类型(ipa-ad-trust,带一个内部 SID)实现,ipa idrange-show --raw 返回的也是该值。列表里它的 Range type 显示为 Active Directory domain range 属于正常。
字段

| 字段 | 含义 |
|---|---|
| First Posix ID of the range、Number of IDs in the range | 区间。各范围不能重叠 |
| Primary RID base、Secondary RID base | 只对本地范围有意义,供 Samba 使用:IPA 用户的 SID 等于域 SID 加 RID,RID 等于基准加(uid 减起始)。Secondary 供组使用 |
| Range type | 见下表 |
| Domain SID | 信任范围绑定的 AD 域 |
| 范围类型 | 含义 |
|---|---|
ipa-local | 本地 |
ipa-ad-trust | AD 用户的 uid 由算法生成:起始加(RID 对范围大小取模)。AD 侧不需要 POSIX 属性 |
ipa-ad-trust-posix | 直接读取 AD 用户对象的 uidNumber、gidNumber(AD 已安装并维护 RFC 2307 属性)。范围必须覆盖 AD 里实际使用的数字 |
ipa-ad-trust 的算法保证同一 SID 在所有客户端得到同一 uid。RID 超过范围大小(AD 用户数超过 200000)时需要再增加一条同域范围。
边界
| 事项 | 说明 |
|---|---|
| 修改已用范围 | 已分配过 ID 的范围不能缩小、不能改起始。扩容是新增范围,不是修改旧范围 |
| 修改本地范围 | 不重排现有用户,只影响之后新建的对象 |
| 删除信任范围 | AD 用户在 Linux 上的 uid 消失,文件属主显示为数字。用相同参数重建范围可以恢复同样的 uid |
| 客户端缓存 | sssd 缓存里的 uid 不随范围改动同步。修改后执行 sss_cache -E |