Как кикнуть пользователя или его процессы с сервера GNU\Linux?
«Кикнуть» — сленговое слово, которое означает «удалить, выгнать или исключить кого-либо». Происходит от английского to kick, что переводится как «пнуть».
Изначально термин использовался в контексте общения в социальных сетях и мессенджерах, а также в компьютерных играх, когда игрока, нарушающего правила, исключали из команды или из игры в целом.
Введение.
Как администратор систем, вы обязаны знать все, что происходит с этими серверами, и что нужно делать, чтобы обеспечить их надежность и безопасность.
Но как узнать, кто вошел в систему на этих серверах GNU/Linux и что они делают?
Для этого пригодится системная утилита who.
Подробнее о ней у меня написано здесь: «Утилита who. Информации о пользователях, которые подключены к системе.»
Кто на сервере?
Посмотрим какие пользователи подключены к серверу:
$ sudo who
Ответ:

Как видно удалённо на сервер зашел пользователь hamster с ip-адреса 100.67.99.11 под псевдотерминалом pts/2 в системе.
С помощью команды tty можно определить номер терминального устройства, связанного с текущей оболочкой.
$ tty
Ответ:

Да, это наше подключение. Предлагаю, для примера, кикнуть с сервера самих себя, то есть пользователя hamster.
Список процессов пользователей.
Посмотрим список всех процессов, которые инициированы пользователем hamster:
$ sudo ps -ef | grep hamster
Выходные данные вышеупомянутой команды будут перечислять все PID всех процессов, связанных с пользователем hamster.
Сделаем выборку процессов связанных с ssh:
$ sudo ps -ef | grep hamster | grep ssh
Ответ:

Как вы можете видеть нужный нам ssh PID — это 8157. Рядом с ним пояснение, что это sshd-session: hamster@pts/2.
Уничтожение процессов пользователя.
Уничтожить процесс пользователя с сессией соединения.
Выполним следующую команду, чтобы завершить сеанс sshd-session: hamster@pts/2:
$ sudo kill <PID>
$ sudo kill 8157
Если процесс не завершается, используйте принудительное завершение:
$ sudo kill -9 <PID>
Пользователя hamster единоразово кикнет с сервера, то есть его сессия и терминал закроются и единоразово потеряется доступ на сервер по этому соединению. Позднее или еще раз сразу, это не помешает ему переподключиться к серверу снова.
Учитывая, что в выводе утилиты who также был виден ip-адрес, с которого вошел пользователь hamster, то можно, чтобы заблокировать этот адрес от доступа к серверу (при необходимости).
![]()
Часто данный способ можно использовать еще для уничтожения зависших процессов пользователя, только без гарантии сохранности данных, которые они обрабатывают.
Уничтожить все процессы пользователя.
Например, можно принудительно уничтожить все процессы пользователя zabbix:
$ sudo ps -ef | grep zabbix
Ответ:

$ sudo killall -9 -u zabbix
Ответ:

Чтобы запустить заново, например, Zabbix Agent 2
$ sudo systemctl daemon-reload $ sudo systemctl restart zabbix-agent2
$ sudo ps -ef | grep zabbix
Ответ:

Оригиналы источников информации.
- dzen.ru — «Выгнать за нарушение: что означает «кикнуть» и когда уместно это слово.»
- itsecforu.ru — «Как узнать, кто заходил на ваш сервер Linux.»
- ru.console-linux.com — «Как завершить зависшие или нежелательные пользовательские сеансы в Linux.»
- baeldung.com — «What Are the /dev/pts Files Used for?»

