在最近的日子里,我已经建立了一些具有LDAP身份验证的Linux系统,并且一切正常,但是经过大量研究,对于NSS和PAM还是有些我不了解的地方。
引用:
NSS允许管理员指定来源列表,在这些来源中将存储和搜索身份验证文件,主机名和其他信息
和
PAM是一组库,它们为应用程序和基础操作系统提供可配置的身份验证平台。
我不了解的是PAM和NSS是如何工作并相互作用的。在这本书的架构是解释得很好:我PAM配置为使用pam_ldap
LDAP的帐户和pam_unix
本地帐户,然后我配置nsswitch.conf
来从本地文件和LDAP信息。
如果我正确理解,则使用LDAP两次:首先pam_ldap
由NSS 使用,然后由NSS使用,后者本身是从调用的pam_unix
。那正确吗?LDAP是否真的使用过两次?但是,为什么我需要同时配置NSS和PAM?我的解释是,PAM执行与NSS不同的任务,并且被其他程序使用。但是,正如我在本页中所读到的那样,那么应该仅可以使用NSS或仅使用PAM 。
因此,我做了一些实验,首先尝试从中删除LDAP nsswitch.conf
(并且身份验证停止工作,好像只有pam_ldap不足以完成这项工作)。然后,我在NSS中重新启用了LDAP,并从PAM配置中将其删除(这次一切正常,好像pam_ldap
没用,NSS足以验证用户身份)。
有谁可以帮助我澄清这一点?提前谢谢了。
更新
我刚刚尝试过一些东西。我再次删除了所有pam_ldap
pam配置字段中的所有条目,并且也从中删除shadow: ldap
了nsswitch.conf
。像现在一样,所有系统中只有行:passwd: ldap files
和group: ldap files
中nsswitch.conf
。好吧...用LDAP用户登录非常有效,这两行(加号/etc/ldap.conf
)足以配置LDAP身份验证。
据我了解,PAM独立于NSS,但我的测试表明事实并非如此。所以我问自己,是否可以完全禁用NSS而仅使用PAM?
getent shadow | grep LDAPUSER
grep LDAPUSER /etc/shadow