在过去的几天里,我一直在研究 LDAP 身份验证,并设法配置了一些 Linux 系统(CentOS 6 和 7),以针对 OpenLDAP 服务器(我也安装并配置了该服务器)执行 SSH 身份验证过程。但是,尽管一切都按我的预期进行,但 LDAP 身份验证过程仍然存在一些困扰我的地方。
我不太明白的是 PAM 和 NSS 如何相互配合以及它们如何相互作用。在研究了这个主题之后,我得出的结论是(参考):
- NSS提供名称服务机制来获取用户和组名称信息;
- PAM 为应用软件提供了一种灵活的身份验证机制,因此涉及密码数据交换。
但是身份验证流程是什么?我配置的文件/服务如何使用(/etc/nsswitch.conf,/etc/nslcd.conf,/etc/nscd.conf/,/etc/pam.d/密码验证) 以及按照什么顺序?
笔记:如果我从“nsswitch.conf”中删除与影子数据库对应的行,身份验证过程仍可正常运行。这意味着文件“nsswitch.conf”从未用于获取密码查找源?
答案1
根据配置,LDAP 不需要影子数据库。有两种常见选项:
- 请求验证对 LDAP 的访问。这需要将用户 ID 和密码传递给 LDAP,LDAP 将接受或拒绝身份验证。这将直接在 LDAP 中使用密码,而不是从影子数据中查找密码。
- 使用具有查找权限的 LDAP 用户访问密码或密码哈希并匹配密码。在某些情况下,这可能会使用影子数据或密码文件的密码字段中的数据。
NSS 提供对许多名称数据库的访问,例如:密码、主机、服务和组。可以针对各种来源(包括文件和 LDAP)进行查找。它可以与缓存守护程序协作,以保留最近访问的数据的本地副本。
PAM 根据一系列规则提供身份验证。根据版本,它可能具有单独的 LDAP 模块,或者其密码模块将支持 LDAP 并能够根据 LDAP 进行身份验证。