重启服务器后,LDAP 用户可以通过 NSLCD 进行 SSH 登录

重启服务器后,LDAP 用户可以通过 NSLCD 进行 SSH 登录

我有一个可以在多台服务器上运行的 nslcd 设置。我将此配置分发到多台服务器上,几乎所有服务器都运行正常,没有任何问题。

但是我忘记在其中五个上安装 libnss-ldapd 和 libpam-ldapd。

这导致以下 nslcd 调试日志

  nslcd: DEBUG: add_uri(ldaps://dc.example.com/)
  nslcd: DEBUG: ldap_set_option(LDAP_OPT_X_TLS_CACERTDIR,"/etc/ssl/certs")
  nslcd: DEBUG: ldap_set_option(LDAP_OPT_X_TLS_CACERTFILE,"/etc/ssl/certs/example.com.pem")
  nslcd: version 0.8.10 starting
  nslcd: DEBUG: unlink() of /var/run/nslcd/socket failed (ignored): No such file or directory
  nslcd: DEBUG: setgroups(0,NULL) done
  nslcd: DEBUG: setgid(108) done
  nslcd: DEBUG: setuid(107) done
  nslcd: accepting connections

  nslcd: [8b4567] DEBUG: connection from pid=6939 uid=0 gid=0
  nslcd: [8b4567] <authc="user"> DEBUG: nslcd_pam_authc("user","sshd","***")
  nslcd: [8b4567] <authc="user"> DEBUG: myldap_search(base="********", filter="(&(memberOf=********)(sAMAccountName=user))")
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_initialize(ldaps://dc.example.com/,)
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_set_rebind_proc()
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_set_option(LDAP_OPT_PROTOCOL_VERSION,3)
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_set_option(LDAP_OPT_DEREF,0)
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_set_option(LDAP_OPT_TIMELIMIT,0)
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_set_option(LDAP_OPT_TIMEOUT,0)
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_set_option(LDAP_OPT_NETWORK_TIMEOUT,0)
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_set_option(LDAP_OPT_REFERRALS,LDAP_OPT_ON)
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_set_option(LDAP_OPT_RESTART,LDAP_OPT_ON)
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_set_option(LDAP_OPT_X_TLS,LDAP_OPT_X_TLS_HARD)
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_simple_bind_s("cn=********,dc=example,dc=com","***") (uri="ldaps://dc.example.com/,")
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_result(): CN=user,OU=********,DC=example,DC=com
  nslcd: [8b4567] <authc="user"> DEBUG: myldap_search(base="CN=user,OU=********,DC=example,DC=com", filter="(objectClass=*)")
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_initialize(ldaps://dc.example.com/,)
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_set_rebind_proc()
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_set_option(LDAP_OPT_PROTOCOL_VERSION,3)
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_set_option(LDAP_OPT_DEREF,0)
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_set_option(LDAP_OPT_TIMELIMIT,0)
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_set_option(LDAP_OPT_TIMEOUT,0)
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_set_option(LDAP_OPT_NETWORK_TIMEOUT,0)
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_set_option(LDAP_OPT_REFERRALS,LDAP_OPT_ON)
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_set_option(LDAP_OPT_RESTART,LDAP_OPT_ON)
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_set_option(LDAP_OPT_X_TLS,LDAP_OPT_X_TLS_HARD)
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_simple_bind_s("CN=user,OU=********,DC=example,DC=com","***") (uri="ldaps://dc.example.com/,")
  nslcd: [8b4567] <authc="user"> DEBUG: failed to bind to LDAP server ldaps://dc.example.com/,: Invalid credentials: 80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db1
  nslcd: [8b4567] <authc="user"> DEBUG: ldap_unbind()

我知道配置正在运行,因为我没有改变任何东西并且它正在其他服务器上运行。

我设法通过重新启动服务器来使 ldap 正常工作,因此似乎在推出后安装 libnss-ldapd 和 libpam-ldapd 时,某些模块被挂起了。

问题 我想知道这是哪个模块,以及我是否可以在不重新启动服务器的情况下重新加载它。

仅供参考:简单的“service nslcd restart”没有起到作用。不过重启后,一切都按预期运行。

答案1

这是前一段时间的事了,但我认为解决方案是重新启动 nscd - 或者在我们的例子中将其删除,因为我们不需要它。

nslcd 负责 ldap 连接,但 nscd 仅执行缓存。

因此,通过删除或重新启动 nscd,缓存被清空并且设置起作用:)

相关内容