如何在一个私有的、全 Linux LDAP 身份验证的网络中限制单个用户帐户一次登录的台式机数量?
下面是要防止的场景: 具有有效帐户的用户使用同一帐户登录到 10 个不同的桌面,以便他可以与 9 个朋友一起玩游戏;这些朋友都没有网络上的有效帐户。
服务器是带有 OpenLDAP 的 RHEL 5,桌面是 Fedora 11(可用时将是 CentOS 5.4)。所有桌面登录都是通过服务器上的 LDAP 进行的。
注意:可以使用in来限制单台机器上的并发登录,但这在所述场景中是无用的。maxlogins/etc/security/limits.conf
另请注意:在带有 Active Directory 的 Windows 网络上,UserLock 和 LimitLogin 等软件可以完成此操作;但是这个网络没有 Windows,也没有 AD 服务器。
编辑:我意识到 LDAP 本身不能做到这一点;如果有成熟的、经过充分测试的附加产品,类似于上述基于 Windows 的产品,那将是个好消息。我什至会考虑非免费/非自由解决方案。
搜索后发现 LDAP 或 Kerberos 似乎不会执行此操作。显然 LDAP 中没有它的属性,并且从 LDAP 的角度来看它确实没有办法工作。LDAP 无法注销,因此永远无法减少登录计数。
鉴于此,解决方案似乎必须是临时的。
您需要一个服务来监视每台计算机上的/var/run/utmp命令w(显示当前登录的用户),并通过某种机制(例如 nfs mount + 文本文件)将其报告给中央服务器。
然后,您需要一个登录脚本,如果用户超出了并发登录限制,则将其踢出。登录脚本将从中央服务器读取当前登录计数。或者,您可以使用一项服务,根据从中央服务器检索到的登录计数值来 修改maxloginsin 。/etc/security/limits.conf
maxlogins = $total_logins - $current_logins
基本上,最重要的考虑因素是用户无权自行更改登录计数,或者他们只能手动更改该值以允许更多登录。