查找当前使用 ldap 登录的用户?

查找当前使用 ldap 登录的用户?

我们有开放LDAP此处配置完毕,用户可以使用 ldap 登录到客户端计算机。但是,有没有办法检查当前使用 LDAP 登录到计算机的用户?我想找出哪个用户使用 LDAP 登录了哪台计算机?

答案1

据我所知,LDAP 不实现会话管理 - 它只是提供目录服务 - 并且其数据可以大量缓存在其他地方。此外,它还可以提供除身份验证之外的信息。因此,不存在“登录 LDAP”之类的东西,也没有办法实际测量它。

假设您维护您的 LDAP 实现,以便您的用户可以访问应用程序 - 您需要查看这些应用程序以确定谁当前有一个打开的会话(假设应用程序是有状态的 - HTTP 不是)。

答案2

引用 symcbean 的话,“没有登录到 ldap 这样的事”。但是有通过 ldap 进行身份验证的用户这样的事。

更具体地说,当您将主机配置为使用 ldap 之类的身份验证后端时,名称服务交换机 (nsswitch) 可以(并且可以说应该)缓存您的用户信息,以允许您登录系统。实际上,从我的角度来看,数据是否被缓存并不重要,它仍然是来自该后端的信息。

无论用户属于 NIS、Unix 还是 ldap 后端,他们都有一个 UID。在正确配置的系统中,一个后端的 UID 不应与另一个后端的 UID 匹配(通常 unix 和 ldap 后端共存)。

最后,为了说明我的观点,您有一个/etc/passwd,并且 的输出getent passwd不应该匹配(ldap 扩展了 unix 后端),因此您知道哪些用户仅存在于 ldap 上。最后,您有last:D ,它将告诉您谁在何时从何处登录,此外还有 syslog 工具 auth 进行双重检查。您可以编写一个简单的脚本,该脚本可以根据此信息告诉您每个主机上哪些 ldap 用户登录了。

注意:如果你在 unix 和 ldap 中有重复的用户,并且有相同的 ID,那么你就得自己处理了 :)

答案3

我非常同意 symcbean 的回答(查找当前使用 ldap 登录的用户?), 但...

您可以尝试解析 DC 的安全日志,但这将返回大量数据。根据您长期想要对数据做什么,可能值得将其发送到数据库中。

===

我不确定 OpenLDAP,但在 AD 上,您可以设置组策略和/或要运行的登录脚本(在 Windows Batch 中):

echo logon %username% %computername% %date% %time% >> \\shared\path\FILE_LOCATION.txt

从 FILE_LOCATION.txt 中解析出用户名或计算机名称,或者:通过计算机名称保存:

echo logon %username% %computername% %date% %time% >> \\shared\path\%computername%.txt

同样,通过用户名保存:

echo logon %username% %computername% %date% %time% >> \\shared\path\%username%.txt

答案4

一般来说你不能。你可以尝试实现它,这样每次用户登录和退出应用程序时都会更新某些 LDAP 属性,但这是多余的。从问题中我假设 OpenLDAP 被用作中央目录,并且其中存储了凭据的用户登录到网络中的许多 Linux 机器。如果是这种情况,那么你需要安装类似手指然后“搜索”网络中的每台机器来查看谁登录了。

相关内容