Принудительно выйти из системы

60

I Когда я вошел в систему как rootи набрал, whoчтобы увидеть, какие пользователи вошли в систему, я обнаружил, что кто-то еще слишком вошел в систему как пользователь root

devuser   pts/0        2011-11-18 09:55 (xxx.xxx.xxx.xxx)
root      pts/1        2011-11-18 09:56 (xxx.xxx.xxx.xxx)
testuser  pts/2        2011-11-18 14:54 (xxx.xxx.xxx.xxx)
root      pts/3        2011-11-18 14:55 (xxx.xxx.xxx.xxx)

Как заставить пользователя root из pts / 3 выйти из системы?

Митхун Шридхаран
источник
9
Вам нужно решить еще большую проблему. Отключите прямой вход в систему root и заставьте своих пользователей использовать sudo.
Xenoactive

Ответы:

55

Вы завершаете сеанс, убивая его родительский процесс, называемый лидером сеанса. Узнайте, с каким процессом это происходит:

ps -dN|grep pts/3
Fabel
источник
10
А затем убить этот процесс, используяkill -9 <processid>
Mithun Sreedharan
5
Просто kill <pid>должно быть достаточно, верно? Пожалуйста, сохраните kill -9s для процессов с плохим поведением, которые не реагируют на INT, HUP или TERM; это похоже на разницу между выключением компьютера с помощью системы меню ОС и отключением компьютера от розетки.
TheDudeAbides
26

Чтобы убить и выйти из системы, вы можете отправить сигнал KILL. Введите следующую команду:

# skill -KILL -u vivek

Проверьте эти ссылки для получения дополнительной информации:

Ниранджан Сингх
источник
6
Что делать, если я вошел в систему как тот же пользователь?
Митхун Шридхаран
эта команда работает для суперпользователя .. вы должны войти в систему как суперпользователь .. сетевые операционные системы следуют этому подходу для безопасности .. я думаю, что эти ссылки также говорят то же самое при входе в систему как администратор ..
Ниранжан Сингх
меня это sudo su -тоже выгнало, хотя я был root, но, думаю, не был в конце. возвращение на сервер показало меня как единственного. у меня было 4 экземпляра себя, я думаю, я бы сказал.
Пьяммер
5
@Mithun Вы можете использовать -t <terminal name>вместо -u.
Мелебиус
1
Ссылка на cyberciti теперь говорит: «ВНИМАНИЕ! Эти инструменты устарели, не переносимы, и это здесь по историческим причинам. Попробуйте вместо этого использовать команды killall, pkill и pgrep следующим образом». pkill -KILL -u vivekработает так же хорошо.
EM0
0

Немного улучшив ответ Фабеля выше:

\# *for pid in $(for ptsn in $(w | grep **user_name** | grep pts | awk '{print $2}'); do ps -dN | grep "$ptsn " | awk '{print $1}' ; done); do kill -9 $pid; done*
collisio
источник