Автоматический выход неактивных пользователей через определенный период времени в Linux
В этом кратком руководстве объясняются три различных способа автоматического выхода из системы неактивных пользователей через определенный период времени в Linux и Unix-подобных системах.
Введение
Представьте себе этот сценарий. Вы управляете общим сервером, к которому регулярно обращаются многие пользователи со всех систем сети.
Есть вероятность, что какой-то пользователь забудет выйти из своего сеанса и оставит его открытым. Оставлять сеанс пользователя открытым опасно, и некоторые пользователи могут намеренно использовать его неправильно.
Вы бы вручную проверили каждую систему, чтобы убедиться, вышли ли пользователи из системы или нет? Это не обязательно! Кроме того, это довольно трудоемкая задача, если в вашей сети сотни компьютеров.
Вместо этого вы можете заставить пользователя автоматически выходить из локального сеанса или сеанса SSH после определенного периода бездействия.
Автоматический выход из системы неактивных пользователей в Linux
Мы можем автоматически выходить из неактивных пользовательских сессий через определенное время тремя способами. Давайте посмотрим первый метод.
Способ 1. Отключите неактивных пользователей, отредактировав файлы bashrc или bashprofile:
Отредактируйте файл ~/.bashrc
или ~/.bash_profile
:
nano ~/.bashrc
Или,
nano ~/.bash_profile
Добавьте в конце следующую строку:
TMOUT=100
Настройка значения времени ожидания пользователя в Linux
Это заставляет пользователя автоматически выходить из системы после бездействия в течение 100 секунд. Вы можете определить это значение по своему усмотрению. Нажмите ESC
и введите :wq
, чтобы сохранить файл и закрыть его.
Примените изменения, выполнив следующую команду:
source ~/.bashrc
Или,
source ~/.bash_profile
Теперь оставьте сеанс бездействующим на 100 секунд. После 100 секунд бездействия вы увидите следующее сообщение, и пользователь автоматически выйдет из сеанса.
timed out waiting for input: auto-logout
Connection to 192.168.122.181 closed.
Автоматический выход из системы неактивных пользователей в Linux
Этот параметр может быть легко изменен пользователем. Потому что файл ~/.bashrc
принадлежит самому пользователю.
Чтобы изменить или удалить настройки тайм-аута, просто удалите строки, добавленные выше, и примените изменения, выполнив следующую команду:
source ~/.bashrc
Альтернативно, пользователь может отключить это, выполнив следующие команды:
export TMOUT=0
Или,
unset TMOUT
Поскольку настройка тайм-аута хранится в принадлежащем пользователю файле ~/.bashrc
, он/она может легко обойти ее, просто удалив строку. Если вы хотите запретить пользователю изменять настройки, воспользуйтесь вторым способом.
Способ 2 – Удаление неактивных пользователей с помощью скрипта:
Войдите в систему как пользователь root
.
Создайте новый файл с именем autologout.sh
.
vi /etc/profile.d/autologout.sh
Добавьте следующие строки:
TMOUT=100
readonly TMOUT
export TMOUT
Сохраните и закройте файл.
Сделайте его исполняемым с помощью команды:
chmod +x /etc/profile.d/autologout.sh
Выйдите из системы или перезагрузите систему, чтобы изменения вступили в силу.
Неактивный пользователь автоматически выйдет из системы через 100 секунд. Обычный пользователь не может изменить эти настройки, даже если он/она хочет остаться в сеансе. Они будут выброшены ровно через 100 секунд.
Эти два метода применимы как для локального сеанса, так и для удаленного сеанса, то есть для локально вошедших в систему пользователей или пользователей, вошедших в систему из удаленной системы через SSH.
В следующем методе мы увидим, как автоматически выходить из системы только неактивных сеансов SSH, а не локальных сеансов.
Метод 3 – автоматическое отключение неактивных сеансов SSH:
В этом методе мы заставим пользователей сеанса SSH выходить из системы только после определенного периода бездействия.
Отредактируйте файл /etc/ssh/sshd_config
:
sudo vi /etc/ssh/sshd_config
Добавьте/измените следующие строки:
ClientAliveInterval 100
ClientAliveCountMax 0
Здесь,
ClientAliveInterval
— устанавливает интервал ожидания в секундах, по истечении которого, если от клиента не было получено данных, sshd отправит сообщение по зашифрованному каналу для запроса ответа от клиента. . По умолчанию установлено значение 0, что означает, что эти сообщения не будут отправляться клиенту.ClientAliveCountMax
— устанавливает количество активных сообщений клиента, которые могут быть отправлены без получения sshd каких-либо сообщений от клиента. Если вы установите ноль (0) для ClientAliveCountMax, это отключит завершение соединения. Значение по умолчанию — 3.
Нажмите клавишу ESC
и введите :wq
, чтобы сохранить и закрыть этот файл. Перезапустите службу sshd, чтобы изменения вступили в силу.
sudo systemctl restart sshd
Теперь подключитесь к этой системе по SSH из удаленной системы. Через 100 секунд сеанс ssh будет автоматически закрыт, и вы увидите следующее сообщение:
Connection to 192.168.122.181 closed by remote host.
Connection to 192.168.122.181 closed.
Отныне любой, кто получит доступ к этой системе из удаленной системы через SSH, будет автоматически выходить из системы после 100 секунд бездействия.