Como chutar outros usuários root logados de diferentes shells?

1

Eu entrei em uma máquina e digitei:

insite1@POC-Messaging1:/opt/insiteone/log> last -a | grep "logged"
insite1  pts/6        Tue Jul 30 03:59   still logged in    160.110.5.210
root     pts/5        Tue Jul 30 02:28   still logged in    160.110.154.231
root     pts/4        Tue Jul 30 02:26   still logged in    160.110.154.231
root     pts/0        Tue Jul 30 02:18   still logged in    160.110.5.210
root     pts/3        Tue Jul 30 02:13   still logged in    160.110.5.210
root     pts/2        Tue Jul 30 01:00   still logged in    160.110.154.231
root     pts/1        Tue Jul 30 00:47   still logged in    160.110.154.231

Eu desejo matar outras pessoas, exceto o usuário logado em 160.110.5.210. Como fazer isso?

    
por kingsmasher1 30.07.2013 / 10:48

2 respostas

4

A maneira mais limpa de matar uma sessão de login do terminal é enviar um SIGHUP para todos os processos - o sinal "hangup", que também seria enviado ao fechar uma janela de terminal ou uma conexão SSH.

pkill -HUP -t pts/1

Usar pgrep ou pkill é mais fácil que ps|grep|grep|grep|grep|grep|grep .

Se você quiser fazer um script disso:

for tty in $(who | awk '$1 == "root" {print $2}'); do
    test $tty = ${thistty=$(tty)} || pkill -HUP -t $tty
done
    
por 30.07.2013 / 13:51
3

Disclaimer: Se você expulsar um usuário root, eles podem estar realizando uma importante tarefa de recuperação ou ter um processo de execução longo que é importante, blá blá, então proceda por sua conta e risco, etc.

Assim, você pode obter o ID do processo para todas as sessões com

ps aux | grep pts .

Um comando mais feio que produz uma saída melhor (para mim no Debian) é

ps aux | grep sshd | grep pts | grep -v grep

Agora você pode sudo kill 1234 onde 1234 é o PID das sessões PTS.

    
por 30.07.2013 / 11:34