Назад | Перейти на главную страницу

Как ограничить членов определенной группы одним логином на пользователя?

У меня есть ssh-сервер. Некоторые из моих пользователей одновременно заходят в систему несколько раз; некоторым из тех, кто делает это, не должно быть, и я подозреваю, что делится аккаунтом. Те, кому не следует, все являются членами определенной группы unix.

Я бы хотел ограничить количество одновременных входов в систему, которые могут иметь члены группы 402, «по одному для каждого», при этом приоритет будет иметь самый последний вход в систему.

Последний момент важен; эти пользователи иногда законно теряют свое соединение с машиной, и им необходимо восстановить его, и я не хочу, чтобы они были заблокированы вне машины, потому что есть зависший сеанс, который они не могут убить. Вместо этого я хочу, чтобы новое аутентифицированное соединение автоматически отключило старое.

Кто-нибудь делает что-нибудь подобное? Есть ли у кого-нибудь умные предложения на основе PAM или подобные?

Поверьте, вы могли бы использовать /etc/security/limits.conf для обеспечения этого, синтаксис:

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

Итак, рабочая строка может выглядеть так:

@402 hard maxlogins 1

Что касается потерянных сеансов, не могли бы вы установить минимум ClientAliveInterval в sshd, чтобы мертвые сеансы не оставались слишком долго?

Использовать MaxSessions директива в sshd_config.

Match Group groupname
MaxSessions 1
ClientAliveInterval 30
ClientAliveCountMax 1

В конце вашего файла, чтобы значения были переопределены только для группы groupname (вы должны использовать имя, а не числовой идентификатор). Если клиент не отвечает более чем на одно сообщение, отправленное каждые 30 секунд, клиент будет отключен. Вы можете возиться с числовыми значениями, как вам нравится. Кажется, работает на моем RHEL 6.