- 🐧 Как убить сессии пользователей на Linux
- Как посмотреть активные сессии ssh?
- 1) Как убить пользовательские сессии в Linux с помощью команды pkill
- В чем разница между tty и pts?
- 2) Как убить пользовательские сессии в Linux с помощью команды Killall
- 3) Как убить пользовательские сессии в Linux с помощью команды Kill
- Как выкинуть из системы пользователя по SSH в Linux
- Выкинуть пользователя из сеанса SSH
- Отправить сообщение перед завершением сеанса
- Принудительно завершить сеанс SSH, если SIGNHUP не работает
- Вы также можете выйти из выбранного сеанса пользователя, если у пользователя более одного сеанса SSH
- Как разлогинить всех пользователей?
🐧 Как убить сессии пользователей на Linux
Мануал
Иногда вам может потребоваться убить несколько пользовательских сессий в системе Linux.
Например, вам нужно запустить задание, для которого все пользователи должны выйти из системы.
Другой пример – вы наблюдаете много сеансов ssh в своей системе и хотите убить их всех.
Если да, то как это сделать?
Есть несколько способов добиться этого результата.
Я покажу вам несколько способов, а вы сможете выбрать тот, который соответствует вашим потребностям
Как посмотреть активные сессии ssh?
Вы можете увидеть активные сеансы ssh, запустив команду w на Linux.
# w 00:34:21 up 48 days, 23:38, 4 users, load average: 0.79, 0.58, 0.56 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT magesh pts/0 192.168.1.101 19:47 4:45m 0.04s 0.00s sh /opt/scripts/disk-usage.sh renush pts/1 192.168.1.102 20:35 3:54m 2:23 0.00s sh bash thanis pts/2 192.168.1.103 00:27 5.00s 0.08s 0.04s ssh root pts/4 192.168.1.104 00:34 1.00s 0.02s 0.01s w
1) Как убить пользовательские сессии в Linux с помощью команды pkill
Вы можете напрямую убить сеанс ssh определенного пользователя, используя номер сеанса tty.
Вы можете увидеть номер сеанса tty из вывода команды w.
В моем случае я собираюсь убить сеанс пользователя «magi», этот пользователь подключен к серверу с помощью pts/5, поэтому команда будет следующей:
Хотите понять разницу между tty и pts?
В чем разница между tty и pts?
- TTY: tty означает Teletypewriter. Он напрямую связан с системой как клавиатура / мышь или последовательное соединение с устройством (например, консоль в вашей системе).
- PTS: pts обозначает pseudo terminal slave. Это терминальное устройство, которое эмулируется другой программой (например, сессией ssh в вашей системе).
2) Как убить пользовательские сессии в Linux с помощью команды Killall
Вы можете убить пользовательский сеанс следующим образом с помощью команды killall.
В моем случае я убиваю сеанс пользователя «magesh» с помощью ключа «-u».
3) Как убить пользовательские сессии в Linux с помощью команды Kill
Кроме того, вы можете убить пользовательский сеанс с помощью команды kill.
Этот метод потребует нескольких дополнительных шагов по сравнению с вышеупомянутыми двумя методами, потому что вы не сможете убить сессию напрямую.
Сначала найдите номер tty сеанса пользователя из вывода команды w.
w 00:34:21 up 48 days, 23:38, 4 users, load average: 0.79, 0.58, 0.56 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT magesh pts/0 192.168.1.101 19:47 4:45m 0.04s 0.00s sh /opt/scripts/disk-usage.sh renush pts/1 192.168.1.102 20:35 3:54m 2:23 0.00s sh bash thanis pts/2 192.168.1.103 00:27 5.00s 0.08s 0.04s ssh root pts/4 192.168.1.104 00:34 1.00s 0.02s 0.01s w
Как только он у вас есть, найдите PID соответствующего сеанса tty с помощью команды PS.
ps -ft pts/4 UID PID PPID C STIME TTY TIME CMD root 155183 155092 0 00:34 pts/4 00:00:00 -bash root 163015 155183 0 00:35 pts/4 00:00:00 ps -ft pts/4
Наконец убейте идентификатор процесса сеанса.
Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
- Аудит ИБ (49)
- Вакансии (12)
- Закрытие уязвимостей (105)
- Книги (27)
- Мануал (2 306)
- Медиа (66)
- Мероприятия (39)
- Мошенники (23)
- Обзоры (820)
- Обход запретов (34)
- Опросы (3)
- Скрипты (114)
- Статьи (352)
- Философия (114)
- Юмор (18)
Anything in here will be replaced on browsers that support the canvas element
OpenVPN Community Edition (CE) – это проект виртуальной частной сети (VPN) с открытым исходным кодом. Он создает защищенные соединения через Интернет с помощью собственного протокола безопасности, использующего протокол SSL/TLS. Этот поддерживаемый сообществом проект OSS (Open Source Software), использующий лицензию GPL, поддерживается многими разработчиками и соавторами OpenVPN Inc. и расширенным сообществом OpenVPN. CE является бесплатным для […]
Что такое 404 Frame? Большинство инструментов для взлома веб-сайта находятся в 404 Frame. Итак, что же представляют собой команды? Вы можете отдавать команды, используя повседневный разговорный язык, поскольку разработчики не хотели выбирать очень сложную систему команд. Команды Команды “help” / “commands” показывают все команды и их назначение. Команда “set target” – это команда, которая должна […]
В этой заметке вы узнаете о блокировке IP-адресов в Nginx. Это позволяет контролировать доступ к серверу. Nginx является одним из лучших веб-сервисов на сегодняшний день. Скорость обработки запросов делает его очень популярным среди системных администраторов. Кроме того, он обладает завидной гибкостью, что позволяет использовать его во многих ситуациях. Наступает момент, когда необходимо ограничить доступ к […]
Знаете ли вы, что выполняется в ваших контейнерах? Проведите аудит своих образов, чтобы исключить пакеты, которые делают вас уязвимыми для эксплуатации Насколько хорошо вы знаете базовые образы контейнеров, в которых работают ваши службы и инструменты? Этот вопрос часто игнорируется, поскольку мы очень доверяем им. Однако для обеспечения безопасности рабочих нагрузок и базовой инфраструктуры необходимо ответить […]
Одной из важнейших задач администратора является обеспечение обновления системы и всех доступных пакетов до последних версий. Даже после добавления нод в кластер Kubernetes нам все равно необходимо управлять обновлениями. В большинстве случаев после получения обновлений (например, обновлений ядра, системного обслуживания или аппаратных изменений) необходимо перезагрузить хост, чтобы изменения были применены. Для Kubernetes это может быть […]
Как выкинуть из системы пользователя по SSH в Linux
Добавить в избранное
Главное меню » Linux » Как выкинуть из системы пользователя по SSH в Linux
Е сли вы вошли в удаленную систему Linux через SSH, вам просто нужно использовать команду exit для выхода из SSH.
Отлично. Но что, если вы хотите отключить какого-либо другого пользователя с помощью SSH-соединения?
В этой быстрой подсказке мы покажем вам, как вы можете выгнать любого пользователя из системы.
Выкинуть пользователя из сеанса SSH
Сначала проверьте список пользователей, вошедших в систему на вашем сервере Linux. Это можно сделать разными способами. Мы будем использовать команду who с опцией -u. Этот параметр отображает идентификатор процесса сеанса оболочки входа пользователей.
root@localhost:~# who -u andreyex pts/0 2021-04-06 16:19 00:01 27382 (217.043.088.107) alex pts/1 2021-04-06 16:20 . 27583 (217.043.088.107) root pts/2 2021-04-06 16:21 . 27654 (217.043.088.107)
Теперь представьте, что мы хотим прекратить использование сеанса alex в SSH. Идентификатор процесса его сеанса оболочки — 27583. Если вы завершите сеанс оболочки входа в систему, пользователь будет отключен.
Для этого вы можете использовать команду kill для отправки сигнала SIGHUP. Этот сигнал используется для сообщения о том, что терминал пользователя отключен. Он также эффективно отключает все процессы в сеансе от управляющего терминала.
Конечно, чтобы выполнить такое действие, вы должны быть пользователем root или sudo.
Есть несколько вещей, которые вам следует знать и делать.
Отправить сообщение перед завершением сеанса
Это хорошая идея, чтобы проинформировать конечного пользователя, прежде чем вы завершите его/ее сеанс. Вы можете использовать команду записи, чтобы быстро отправить сообщение пользователю следующим образом:
echo "Your session will end in 2 minutes. Save your work!" | write alex pts/2
Принудительно завершить сеанс SSH, если SIGNHUP не работает
Если сигнал SIGHUP не работает, отправьте сигнал SIGKILL.
Вы также можете выйти из выбранного сеанса пользователя, если у пользователя более одного сеанса SSH
Если один и тот же пользователь входит в систему из более чем одной системы или терминала, это влияет только на сеанс, который вы убиваете. Это не удалит пользователя из всех сеансов.
Это тот случай, когда ваш сеанс SSH зависает по какой-то причине, например, при отключении сети. Вы можете убить терминал и открыть еще один сеанс SSH с нового терминала, но теперь вы видите, что дважды вошли в систему.
В таком случае вы можете закрыть сеанс, который больше не должен быть активным.
Вы можете определить, какого пользователя начать, по времени входа в журнал, который виден в выходных данных whoкоманды. Не волнуйтесь, в худшем случае вы откажетесь от текущего сеанса. Но тогда вы можете войти снова.
Надеемся, этот быстрый совет помог вам выйти из сеанса SSH в Linux. Ваши вопросы и предложения приветствуются.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Как разлогинить всех пользователей?
Появилась необходимость разлогинить всех пользователей.
Пока мысли, только чтобы добавить всем пользователям флаг, а при входе пользователя смотреть, стоит ли этот флаг и если да, то logout юзера, может есть какие нибудь более изящные способы?
Каждая сессия — это файл на сервере, удаляем файлы все и юзеров заставят авторизоваться при следующем запросе страницы.
есть метод getSavePath(), можно попробовать очистить папку через exec, либо unlik в цикле, это конечно если доступ будет.
еще есть gcSession, че то такое, сборщик мусора, можно погуглить про него.
а еще можно время жизни сессии поставить в 1 секунду и все попадают)
я думаю что поставить одну секунду не получится, ибо время устанавливается на момент создания идентификатора сессии. после работать не будет. вроде как.
Можно организовать флаги на базе MemCached:
Cоздав, например, флаг ‘action_logout:15’ со значением например » в момент запроса от клиента c пробовать получить по ключу значение из MemCached,
Если найдено, то проверить все необходимые условия и разлогинить только его, в примере, что «ip» клиента соответствует 10.0.0.1.
Как вариант, дополнительно можно проверять ‘action_logout:*’ для всех попадающих под условие.
Да массу чего можно придумать, на базе этого. Так же можно добавить текст причины окончания сессии, чтобы полностью не травмировать психику людей 🙂
Средствами Yii опять же возможно разлогинить, если перевести данные сессий в MemCached, благо это делается парой строк в конфиге, и по необходимости чистить содержимое MemCache.