之路教程 https://onitr oad .com

解决方案

Linux 用户的 UID 和 GID 来自 Windows AD SID。
sssd 不会改变它。
ID 映射功能允许 sssd 充当 Active Directory 的客户端,而无需管理员扩展用户属性以支持用户和组标识符的 POSIX 属性。

Active Directory 为目录中的每个用户和组对象提供一个 objectSID。
此 objectSID 可以分解为代表 Active Directory 域标识和用户或者组对象的相对标识符 (RID) 的组件。
sssd ID 映射算法采用一系列可用的 UID 并将其划分为相同大小的组件部分,称为“切片”-。
每个切片代表 Active Directory 域的可用空间。

当第一次遇到特定域的用户或者组条目时,sssd(8) 会为该域分配一个可用切片。
为了使这种切片分配在不同的客户端机器上可重复,使用了以下算法:SID 字符串通过 murmurhash3 算法将其转换为 32 位散列值。
然后用这个值的模数和可用切片的总数来选择切片。

在 sssd(8) 中启用 ID 映射时,将忽略 uidNumber 和 gidNumber 属性。
这是为了避免自动分配的值和手动分配的值之间发生冲突的可能性。
如果我们需要使用手动分配的值,则必须手动分配所有值。

Linux 客户端上的 sssd.conf 文件应该是一致的。
特别是以下两个参数在所有sssd.conf中必须保持一致,因为它们会影响sssd ID-mapping算法:

  1. ldap_idmap_default_domain_sid(字符串)
    指定默认域的域 SID。
    这将保证该域将始终被分配到 ID 映射中的切片零,绕过上述 murmurhash 算法。

默认值:未设置

  1. ldap_idmap_default_domain(字符串)
    指定默认域的名称。

默认值:未设置

Windows Active Directory 帐户在不同的 Linux SSSD 客户端 (CentOS/RHEL) 中显示不一致的 UID/GID

问题

id 命令在不同的 sssd 服务器上为同一个 Windows Active Directory 用户显示不同的 UID 和 GID。
通过sss_cache清除sssd缓存后,UID和GID还是不同。

  1. 一台服务器的输出:
# id ad_test_user
uid=[UID](ad_test_user) gid=[GID](ad_test_group) groups=[GID](ad_test_group2),[GID](ad_test_group)
# sss_cache -u ad_test_user
# id ad_test_user
uid=[UID](ad_test_user) gid=[GID](ad_test_group) groups=[GID](ad_test_group2),[GID](ad_test_group)
  1. 来自另一台服务器的输出:
# id ad_test_user
uid=[UID](ad_test_user) gid=[GID](ad_test_group) groups=[GID](ad_test_groups),[GID](ad_test_group3),[GID](ad_test_group4),[GID](ad_test_group5), [GID](ad_test_group2),[GID](ad_test_group)
# sss_cache -u ad_test_user
# id ad_test_user
uid=[UID](ad_test_user) gid=[GID](ad_test_group) groups=[GID](ad_test_groups),[GID](ad_test_group3),[GID](ad_test_group4),[GID](ad_test_group5), [GID](ad_test_group2),[GID](ad_test_group)

对Linux服务器的可能影响:AD用户无法登录Linux

# su - ad_test_user
Last login: Fri Sep 11 11:11:11 COT 2015 from 10.10.xx.xx on pts/1
Last failed login: Tue Mar 13 13:13:13 COT 2015 from 10.10.10.2 on ssh:hostname
There were 1 failed login attempts since the last successful login.
su: warning: cannot change directory to /home/ad_test_user: Permission denied
id: cannot find name for group ID [GID]
-bash: /home/ad_test_user/.bash_profile: Permission denied
-bash-4.2$
日期:2020-09-17 00:12:58 来源:oir作者:oir