背景:我们的组织已使用 NIS 进行 UNIX/Linux 身份验证 20 多年,一直持续到现在。大约 16 年前,Windows 和 Active Directory 出现在我们的组织中,但从未使用 AD 进行 Linux 身份验证(现在仅使用 RHEL/CentOS 和 Ubuntu Linux,所有其他 *nix 都已被淘汰。)因此,在我们所有的 Linux 资源上,我们仍在使用传统的 UID/GID 范围来表示用户的文件。
现在,管理层最终决定我们需要转向 AD 进行 Linux 身份验证,并停止使用 NIS(这没有真正的争论 ;),因此我们正在努力利用 SSSD 来做到这一点(这似乎是将 Linux 身份验证与 AD 集成的流行 [唯一?] 方法。)我们面临的问题是如何将用户的旧 NIS UID 和 GID 值与他们新的基于 AD 的身份相关联。例如,我在测试系统上经过 AD 身份验证的用户有以下信息getent passwd -s sss wdennis
:
root@vm01:~# getent passwd -s sss wdennis
wdennis:*:140001116:140000513:Will Dennis:/home/wdennis:/bin/bash
因此,显然 UID/GID 是自动生成的,与我们当前的 NIS 值不符。在对 AD 及其架构进行一些研究时,我发现用户属性包括以下内容:
uidNumber
gidNumber
unixHomeDirectory
loginShell
我的问题是,SSSD(或我们用于身份验证的任何工具)能否以某种方式使用值uidNumber
并将gidNumber
文件的现有 UID/GID 映射到新的 AD 身份验证用户?或者,我们还能如何将现有文件所有权信息与 AD 身份验证用户关联起来?(由于文件数量和拥有这些文件的机器数量众多,因此实际上不可能将chown
文件映射到新的 UID/GID 值...)
答案1
是的,sssd 可以使用来自 AD 的 POSIX 属性,而不是进行自己的 ID 映射。
在您的 AD 域部分/etc/sssd/sssd.conf
,只需设置ldap_id_mapping = false
。
如果您已经在计算机上使用了 sssd 的自动 ID 映射,请确保在重新启动 sssd 之前清除其缓存。
rm -f /var/lib/sss/db/*
当使用realm join
将新计算机加入域时,包含命令行选项--automatic-id-mapping=no
。