从 Active Directory 分配 UID 和 GID

从 Active Directory 分配 UID 和 GID

我的 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_idmax_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 中使用该域的任何其他系统上设置相同的映射!

相关内容