Как я могу заставить других пользователей выйти из системы?

14

Есть ли для меня простой способ заставить другого пользователя отключить Linux, пока я вошел в систему как пользователь root? Я понимаю, что могу определить, какой тип сеанса у них открыт, и убить pid - но я думаю, что для этого должна быть команда, о которой я не знаю.

Есть идеи?

казарка
источник

Ответы:

15

Вы можете просто slay(1)его. :-)

Дэвид Шмитт
источник
Ха! Ухоженная. Я никогда не слышал об этой команде раньше. Это доступно на всех системах? Конечно, похоже, что это лучше, чем убить их процесс оболочки.
Джонатон Уотни
Он, вероятно, упакован для всех дистрибутивов, но если вам нужно что-то, что работает везде, навык из procps - как указывает Михай - может быть лучшим выбором. У этого есть меньше стиля хотя ;-)
Дэвид Шмитт
1
openSuse 11.4 - команда slay: не найдена :( :(
usr-local-ΕΨΗΕΛΩΝ
Не установлен на хосты Ubuntu 12.04 или RHEL 3, которые у меня есть в настоящее время, у меня есть skillкоманда, подробно описанная Михаем Лимбашаном. YMMV
Дэвид
Установите его из вселенной: packages.ubuntu.com/search?keywords=slay
Дэвид Шмитт,
10

Вы можете убить все процессы пользователя через skill. Пример:

  • skill -TERM -u username

отправит SIGTERM всем usernameроссийским процессам. Чтобы убить их навсегда (с помощью SIGKILL), используйте -KILL вместо -TERM - однако, обратите внимание, что вы, скорее всего, заставите их потерять данные таким образом. Это очень эффективно, заметьте ...

skillявляется частью procpsпакета, который по умолчанию устанавливается всеми дистрибутивами.

Михай Лимбашан
источник
Для других, которые хотят сделать это для всех сеансов удаленного пользователя, -v pts/*может быть полезен флаг -v ( ) со страницы руководства.
Дэвид
2

pkillИ killallпредпочтительнее skill. Это из skillсправочной страницы:

Эти инструменты, вероятно, устарели и не переносимы. Синтаксис команды плохо определен. Рассмотрим использование killall, pkillи pgrepкоманды вместо этого.

Это должно сделать трюк:

sudo pkill -KILL -u [user]

или

sudo killall -u [user]
Дэвид
источник
1
Не пробуйте это на root.
Майкл Хэмптон
0

Другой простой способ сделать это - запустить kill -1 <pid>там, где pid - это номер процесса SSH.

Запустив эту команду, вы увидите все деревья процессов sshd , убив идентификатор родительского процесса, вы фактически уничтожите сеанс пользователя, связанный с ним:

$ ptree -p

Найдите sshd и запустите:

$ kill -1 39383

Где 39383 - пример произвольного идентификационного номера процесса.

Да Барри
источник