如何限制每个用户的某个组的成员login?

我有一个SSH服务器。 我的一些用户同时login多次, 有些这样做的人不应该,我怀疑帐户分享。 那些不应该是一个特定的unix组的成员。

我想要的是一种限制组402的成员可以具有“一个”的并发login数的方式,其中最近的login优先。

最后一点很重要。 这些用户有时会合法地失去与机器的连接,需要重新build立连接,我不希望他们被locking在机器外面,因为有一个挂起的会话,他们不能杀死。 相反,我想要一个新的authentication连接尝试自动断开旧的连接。

有人做这样的事吗? 有没有人有任何聪明的PAM或类似的build议?

相信你可以使用/etc/security/limits.conf来强制执行,语法是:

<domain> <type> <item> <value>

所以一个工作线可能看起来像:

@402 hard maxlogins 1

至于失去的会话,你可以设置一个低的ClientAliveInterval sshd,以确保死亡会议不会停留太久?

在sshd_config中使用MaxSessions指令。

 Match Group groupname MaxSessions 1 ClientAliveInterval 30 ClientAliveCountMax 1 

在文件的末尾,这样值只能被组groupname覆盖(您必须使用名称,而不是数字ID)。 如果客户端不响应每隔30秒发送一个以上的消息,则客户端将被断开连接。 你可以摆弄数值来达到你的满意。 似乎在我的RHEL 6上工作。