我的 CentOS 7 机器已成功加入域 FOOBAR(已通过 验证realm list
),以下是有关来自 AD(非本地)的用户的信息:
[root@centos7 ~]# id [email protected]
uid=5631533([email protected]) gid=5600513(domain [email protected])
groups=5600513(domain [email protected]),5631532([email protected])
UID和GID是如何分配的?是否有可能以某种方式将它们映射到某个所需的值?
答案1
SSSD 中的 AD 映射是使用守护程序本身中的算法(可能是哈希函数)确定的:因为它是内置的,如果保持默认值相同,则每台使用 SSSD 的计算机都应将 ID 映射到相同的值,而不管计算机是什么正在使用。这是Red Hat对AD映射的解释:
SSSD 可以使用 AD 用户的 SID 在称为 ID 映射的过程中通过算法生成 POSIX ID。 ID 映射在 AD 中的 SID 和 Linux 上的 ID 之间创建映射。
当 SSSD 检测到新的 AD 域时,它会为新域分配一系列可用 ID。因此,每个 AD 域在每个 SSSD 客户端计算机上都具有相同的 ID 范围。
当 AD 用户首次登录 SSSD 客户端计算机时,SSSD 会在 SSSD 缓存中为用户创建一个条目,其中包括基于用户 SID 的 UID 和该域的 ID 范围。
由于 AD 用户的 ID 是从相同的 SID 以一致的方式生成的,因此该用户在登录任何 Red Hat Enterprise Linux 系统时都具有相同的 UID 和 GID。
您可以使用以下命令设置 ID 最小值和最大值min_id
并max_id
在[域/姓名] sssd.conf 的部分。查看“域部分”下的描述; “示例”有一个使用示例:
[sssd]
domains = LDAP
services = nss, pam
config_file_version = 2
[nss]
filter_groups = root
filter_users = root
[pam]
[domain/LDAP]
id_provider = ldap
ldap_uri = ldap://ldap.example.com
ldap_search_base = dc=example,dc=com
auth_provider = krb5
krb5_server = kerberos.example.com
krb5_realm = EXAMPLE.COM
cache_credentials = true
min_id = 10000
max_id = 20000
enumerate = False
如果您覆盖这些值,并且想要保持一致的映射,请确保在 SSSD 中使用该域的任何其他系统上设置相同的映射!