Как я могу ограничить количество настольных компьютеров в частной сети с LDAP-аутентификацией на базе Linux, в которую единовременно входит одна учетная запись пользователя?
Вот сценарий, который следует предотвратить: пользователь с действующей учетной записью входит в эту же учетную запись на 10 различных рабочих столах, чтобы он мог играть в игры со своими 9 друзьями; ни у кого из этих друзей нет действующей учетной записи в сети.
Сервер - RHEL 5 с OpenLDAP, рабочие столы - Fedora 11 (будет CentOS 5.4, когда он будет доступен). Все входы в систему с рабочего стола осуществляются через LDAP на сервере.
Примечание. Ограничение одновременного входа на не замужем машина может быть сделана с maxlogins
в /etc/security/limits.conf
, но в указанном сценарии это бесполезно.
Также обратите внимание: в сети Windows с Active Directory такое программное обеспечение, как UserLock и LimitLogin, может сделать это; но в этой сети нет ни Windows, ни сервера AD.
РЕДАКТИРОВАТЬ: Я понимаю, что LDAP не может этого сделать сам; если есть зрелый, хорошо протестированный дополнительный продукт, похожий на вышеупомянутые продукты для Windows, то это будет хорошей новостью. Я даже не буду считатьбесплатно/ не-свободный решения.
После поиска не похоже, что LDAP или Kerberos будут делать это. По-видимому, в LDAP для него нет атрибута, и на самом деле он не может работать с точки зрения LDAP. Нет выхода из LDAP, поэтому он никогда не сможет уменьшить количество входов в систему.
Учитывая это, похоже, что решение должно быть специальным.
Вам понадобится служба, которая отслеживает /var/run/utmp
или команда w
(показывает пользователей, которые в настоящее время вошли в систему) на каждой машине и сообщает об этом центральному серверу с помощью некоторого механизма (например, nfs mount + текстовый файл).
Затем вам понадобится сценарий входа в систему, который выгружает пользователя, если он превысил лимит одновременных входов в систему. Сценарий входа в систему будет читать с центрального сервера текущее количество входов в систему. В качестве альтернативы у вас может быть сервис, который изменяет maxlogins
в /etc/security/limits.conf
на основе значения счетчика входов в систему, полученного с центрального сервера.
maxlogins = $total_logins - $current_logins
По сути, наиболее важным соображением является то, что у пользователей нет разрешения на изменение количества входов в систему самостоятельно, или они могут просто вручную изменить значение, чтобы разрешить больше входов в систему.