我有一个要求,允许非本地用户帐户通过 LDAP 身份验证登录。这意味着,如果用户帐户存在于 LDAP 服务器数据库中,则允许尝试登录的用户访问,无需有本地用户。
如果我运行 NSLCD(/usr/sbin/nslcd),我就能实现这一点。
想知道我们是否可以使用 /etc/pam.d/sshd 或 /etc/pam_ldap.conf 中的任何配置来执行此操作,而无需运行 NSLCD。
请告诉我你的建议
谢谢,Sravani
答案1
不,仅使用 PAM 是无法做到这一点的。
PAM 是一个用于身份验证、授权和相关记账任务的库。它不是一个低级库;如果程序不包含对 PAM 的显式调用,它就什么也不做。
uid 和 gid 的查找通过名为 (Name Service Switch) 的系统进行NSS
。此系统通过 进行配置/etc/nsswitch.conf
。如果您没有提供用于 NSS 与 LDAP 通信的库,则低级 C 库无法对其进行查找。
它是可以使用不依赖的 LDAP 的其他 NSS 库nslcd
(这是 PADL 提供的旧 LDAP 库的运行方式),但这几乎肯定不是一个好主意。如果没有后台运行的守护进程,每次通话到 NSS 的请求必须打开与 LDAP 服务器的新连接并立即释放它。这非常浪费,并且使得库无法跟踪远程服务器的状态,即在网络中断期间,每个 NSS 查找都必须单独超时。
答案2
如果您使用的是 redhat 或派生发行版,只需使用 authconfig 实用程序。
不确定这是否可以在 Debian/deb 衍生发行版下使用(我怀疑不行)。
如果您需要更多信息,您可能必须指定您正在使用的发行版。