我们在这里configuration了Openldap ,用户可以使用ldaplogin到客户机。 但任何方式来检查当前用LDAPlogin到机器的用户? 我想find哪个用户使用LDAPlogin到哪台机器?
AFAIK LDAP不会实现会话pipe理 – 它只是提供一个目录服务 – 其数据可以在其他地方大量caching。 它也可以提供authentication以外的信息。 所以没有“login到LDAP”这样的东西,也没有办法实际测量它。
假设您维护您的LDAP实现,以便您的用户可以访问应用程序 – 您需要查看这些应用程序以确定谁目前有一个开放的会话(假设应用程序是有状态的 – HTTP不)。
引用symcbean,“没有login到ldap的东西”。 但是,通过ldap进行身份validation的用户是这样的。
更具体地说,当您将主机configuration为使用像ldap这样的身份validation后端时,名称服务交换机(nsswitch)可以(也可以说应该)caching您的用户信息以允许您login到您的系统。 实际上,从我的angular度来看,数据是否被caching并不重要,它仍然是来自后端的信息。
用户无论是属于NIS,Unix还是ldap后端都有一个UID。 在适当的configuration系统中,来自一个后端的UID不应该与另一个后端的UID匹配(通常是unix和ldap后端在一起)。
最后要说明一点,你有一个/etc/passwd ,和getent passwd的输出,它们不应该匹配(ldap扩展了unix后端),因此你知道哪些用户完全存在于ldap上。 最后,你有last :D,这将告诉你谁从哪里login,除了系统日志设施身份validation双重检查。 您可以制作一个简单的脚本,告诉您哪些ldap用户以每个主机为基础使用此信息login。
注意:如果你在unix和ldap中有相同的用户,那么你自己:)
我基本上同意symcbean的答案( 查找当前使用ldaplogin的用户? ),但…
你可以尝试parsingDC的安全日志,但是这将返回大量的数据。 根据你想要对数据进行长期处理,可能值得将其发送到数据库中。
===
我不确定OpenLDAP,但在AD上,您可以设置组策略和/或login脚本运行(在Windows批处理中):
echo logon %username% %computername% %date% %time% >> \\shared\path\FILE_LOCATION.txt
从FILE_LOCATION.txtparsing出用户名或计算机名,或者:通过计算机名保存:
echo logon %username% %computername% %date% %time% >> \\shared\path\%computername%.txt
同样,通过用户名保存:
echo logon %username% %computername% %date% %time% >> \\shared\path\%username%.txt
一般你不能。 您可以尝试并实现它,这样每次用户login和注销应用程序时都会更新一些LDAP属性,但这太过头了。 从这个问题我假设OpenLDAP被用作一个中央目录和用户与存储在其中的凭据login到您的networking中的一些Linux机器。 如果是这种情况,那么你需要安装类似手指的东西,然后“手指”networking中的每台机器,看看谁login。
也许客户端机器应该通过RADIUS进行validation,而不是validation。
您可以使用LDAP + Kerberos来实现它,但并不是每个可以login到LDAP的应用程序都可以使用Kerberos进行身份validation。
你可以使用FreeIPA来获得一个易于使用的软件包。
我个人喜欢gWaldo正在去的地方,但是像mfinni说的,我们可能会谈论linux机器。
这可能是矫枉过正,但是……梭子鱼网页filter可以做到这一点,IIRC。
我想你可以用一个使用LDAPauthentication的梭子鱼网页filter做这样的事情。 IIRC梭子鱼维护一个目前已通过authentication的人员名单。 我在AD环境中使用它,但它应该适用于所有types的LDAP。
对我们来说,命令是:
users
做的伎俩。
它列出了本地,LDAP和SSH用户login。 据我所知,只有root用户login才报告。我们在客户机和服务器上安装了Ubuntu 12.04。
我们有OpenLDAP通过PAM和NSSwitch备份我们的身份validation和NFS安装的家用video。 将/etc/idmapd.conf与域声明进行整理是很重要的。 (在我们组织这样做之前,ls -l会将文件所有者和组作为nobody:返回给客户,但当时没有人)
很抱歉回答这样一个老问题,但我有同样的问题,并在这里结束了我的答案之前,我自己整理。 请不要投票我的答案,如果这不适合你。