在过去的几天里,我建立了一些带有LDAP身份验证的Linux系统,一切都很好,但是对于NSS和PAM,我仍然有一些不太了解的地方,也是经过了大量的研究之后。
引用:
NSS允许管理员指定将存储和搜索身份验证文件、主机名和其他信息的源列表。
和
PAM是一组库,为应用程序和底层操作系统提供可配置的身份验证平台。
我不明白PAM和NSS是如何一起工作和互动的。在这本书中,对体系结构进行了很好的解释:我将PAM配置为对LDAP帐户使用pam_ldap,对本地帐户使用pam_unix,然后配置nsswitch.conf从本地文件和LDAP获取信息。
如果我正确理解了LDAP,那么LDAP将被使用两次:首先由pam_ldap使用,然后由NSS使用,这本身就是从pam_unix调用的。是那么回事吗?LDAP真的使用了两次吗?但是为什么我需要同时配置NSS和PAM呢?我的解释是PAM执行的任务与NSS不同,其他程序也使用它。但是,就像我在此页中看到的那样,应该可以只使用NSS或PAM。
因此,我做了一些实验,首先尝试从nsswitch.conf中删除LDAP (并且身份验证停止工作,好像只有pam_ldap不足以完成这项工作)。然后,我在NSS中重新启用了LDAP,并将其从PAM配置中删除(这一次一切正常,好像pam_ldap是无用的,NSS足以对用户进行身份验证)。
有人能帮我澄清这件事吗?在此之前,非常感谢您。
我刚试了点东西。我再次删除了所有pam配置字段中的所有pam_ldap条目,也从nsswitch.conf中删除了shadow: ldap。和现在一样,在所有的系统中,只有行:passwd: ldap files和group: ldap files在nsswitch.conf中。好吧..。使用LDAP用户的登录操作非常完美,这两行(加上/etc/ldap.conf)就足以配置LDAP auth了。
据我所知,PAM独立于NSS,但我的测试表明它不是。所以我问自己,是否有可能完全禁用NSS而只使用PAM?
发布于 2013-09-12 14:42:48
NSS是用来枚举有关服务/用户的信息(您属于哪个组,您的主目录在哪里等等)。帕姆决定如何处理这些信息。
如果要使用LDAP进行身份验证,则需要pam_ldap。如果您正在使用其他的东西(本地帐户、Kerberos等),那么您可能不会使用。
所以他们会做不同的事情。NSS获取信息,PAM决定谁被允许在获得信息后做什么。
https://serverfault.com/questions/538383
复制相似问题