Я гуглил это немного назад и заметил несколько способов, но я предполагаю, что Google не знает все. Итак, как вы пинаете пользователей с вашего Linux-бокса? Кроме того, как вы видите, что они вошли в систему? и связанный с этим ... работает ли ваш метод, если пользователь вошел в систему X11 DE (это не требование, мне просто любопытно)?
users
administration
xenoterracide
источник
источник
who(1)
илиw(1)
. Единственный надежный способ избавиться от любых возможных руткитов, которые могут быть установлены, - это полностью стереть и переустановить систему.Ответы:
Вероятно, есть более простой способ, но я делаю это:
Посмотрите, кто вошел в вашу машину - используйте
who
илиw
:Найдите идентификатор процесса оболочки, к которой подключен их TTY:
Смейтесь над их надвигающимся разъединением (этот шаг не обязателен, но приветствуется)
Убейте соответствующий процесс:
Я только что обнаружил , вы можете объединить шаги 1 и 2, давая
who
на-u
флаг; PID - это число справа:источник
kill -9
а? Вы действительно находитесь в режиме BOFH на этом.kill -9
, а вместо этого начните с более мягких сигналов , но я полагаю, что в этом контексте это не так важно. Я просто оставляю комментарий на случай, если люди пропустят шутку.Как уже отмечал Micheal, вы можете использовать,
who
чтобы узнать, кто вошел в систему. Однако, если у них есть несколько процессов, есть более удобный способ, чем уничтожение каждого процесса по отдельности: вы можете использовать,killall -u username
чтобы убить все процессы этого пользователя.источник
killall
также будет немного более уместным в графических средах, так как нужно убивать не только оболочку.Некромантия!
Я ценю юмор принятого ответа, но профессионально я не могу защищать его.
Самый изящный метод, который я знаю, это отправить -HUP в оболочку для имитации зависания пользователя. Вы можете отправить это на sdle sshd пользователя, чтобы имитировать потерянное соединение, которое запускает очистку всей среды оболочки (включая дочерние оболочки), или отправить это на определенные вложенные оболочки (скажем, те, которые установлены внутри мультиплексора отключенного терминала, который удерживает вас от размонтирования файловой системы), если вы хотите быть очень точным.
Использование
write
сообщений для окончательного простоя ptys перед их загрузкой - забавное хобби.источник
echo "Hasta la vista, baby" | write user_name pty_name && sleep 30 && killall -u user_name -HUP
(сон дает пользователю возможность сохранить и выйти из системы, но вы, вероятно, используете это только для пользователя, который все равно забыл выйти из системы)Выйдите из системы 'username':
Видеть
man skill
источник
Другая полезная команда
pkill
здесьpkill -u username && pkill -9 -u username
.killall
есть недостаток в том, что в Solaris IIRC это означает что-то совершенно другое - такжеpkill
есть немного более продвинутые опции.источник
Прежде всего, это указывает на большую проблему. Если у вас есть пользователи, которым вы не доверяете в своей системе, вам, вероятно, следует выровнять их и переизобразить.
Имея это в виду, вы можете выполнить некоторые или все из следующих действий:
источник
you have users that you don't trust on your system
... Или это может быть то, что вы убиваете одного как сообщение для других. В конце концов, является ли кредо сисадмина «Лучше бояться, чем быть любимым»? Помимо шуток, Макиавелли должен написать книгу О'Рейли.Я огляделся вокруг и не смог найти ни одного скрипта для автоматизации этой задачи.
Итак, основываясь на предложенных здесь решениях, я смешал все в интерактивном скрипте Bash, в котором перечислены пользователи и сеансы,
who -u
чтобы пользователь мог выбрать, что ему делать.Вы можете затем либо:
killall -u <username> -HUP
kill <PID>
Вся необходимая информация поступает
who -u
и затем анализируется с помощьюmapfile
иawk
.Я добавлю возможность отправки сообщения, используя
write
позже (разветвление процесса с задержкой).Я, вероятно, добавлю возможность убить определенную сессию
kill -9
. Но у меня не было проблем с тем, что,kill
как указывалось другими,kill -9
следует избегать, если это возможно.Вы можете проверить код на github, если вы хотите попробовать его или узнать больше о том, как я делаю это в автоматическом режиме:
источник
В конце концов, все сводится к идентификации и завершению тех процессов, которые принадлежат, связаны или порождены из идентификатора пользователя. Какие бы команды вы ни использовали для достижения этой конечной цели, не обязательно иметь значение, пока вы туда добираетесь.
В основном два ответа ...
Вариант A: вызвать выход из системы указанного пользователя, для которого когда-либо и сколько бы логинов у них не было. Так что это будет означать идентификацию тех процессов, которые принадлежат пользователю, отслеживаются uid и классифицируются как часть какого-либо процесса входа в систему для данного дистрибутива linux, который вы запускаете. Поймите, что есть родительские процессы, такие как SSH или VNC до «входа в систему» и дочерние процессы, такие как GDM после «входа в систему». Обычно уничтожение родительского процесса убивает дочерний процесс, но не всегда. Таким образом, вы захотите убить эти другие процессы, которые, очевидно, больше не нужны после выхода из системы. При выполнении всего этого фоновые задания будут работать ... потому что это доброжелательный пользователь, и, возможно, вы просто хотите выйти из него. Насколько я знаю,
/usr/bin/w
и/usr/bin/who
сообщу, кто прошел через процесс входа в систему.Вариант B: полностью завершить все процессы, принадлежащие определенному uid, что будет означать просто уничтожение всех процессов, принадлежащих указанному пользователю, это также приведет к их выходу из системы, если они вошли в систему. Это удовлетворит удаление их из системы . Это должно быть просто,
ps -ef | grep <uid>
а затем завершить все эти процессы любым приемлемым способом.fwiw в SLES 11 сообщает
kill -9
FTW!источник
По моему мнению, это не очень полезно для использования,
killall -u username
потому что, если это тот же пользователь, что и вы, вы начнете себя. Такkill
что процесс будет лучшим решением.источник
Эта команда отлично работала для GUI, мой "значительный" отказывается выходить из ...
Некоторые диверсии на случай, если они вам понадобятся.
источник