Wie kann man andere Root-Benutzer, die aus verschiedenen Shells angemeldet sind, kicken?

1

Ich habe mich bei einer Maschine angemeldet und Folgendes eingegeben:

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

Ich möchte andere töten, mit Ausnahme des Benutzers, der von 160.110.5.210 angemeldet ist. Wie geht das?

kingsmasher1
quelle

Antworten:

4

Die sauberste Methode zum Beenden einer Terminal-Anmeldesitzung ist das Senden eines SIGHUP an alle Prozesse - das "Hangup" -Signal, das auch beim Schließen eines Terminalfensters oder einer SSH-Verbindung gesendet wird.

pkill -HUP -t pts/1

Verwenden von pgrepoder pkillist einfacher als ps|grep|grep|grep|grep|grep|grep.

Wenn Sie dieses Skript erstellen möchten:

for tty in $(who | awk '$1 == "root" {print $2}'); do
    test $tty = ${thistty=$(tty)} || pkill -HUP -t $tty
done
Grawity
quelle
Wenn Sie einen Benutzer zwangsweise abmelden möchten, können Sie auch ausführen killall -9 -u $USER.
Max Ried
2
... was eine wirklich sehr, sehr schlechte Idee sein könnte, wenn Sie es für root tun ...
Max Ried
3

Haftungsausschluss: Wenn Sie einen Root-Benutzer rausschmeißen, führt dieser möglicherweise eine wichtige Wiederherstellungsaufgabe aus oder es läuft ein langfristiger Prozess, der wichtig ist. Gehen Sie also auf eigenes Risiko vor.

So können Sie die Prozess-ID für alle diese Sitzungen mit abrufen

ps aux | grep pts.

Ein hässlicherer Befehl, der allerdings eine bessere Ausgabe erzeugt (für mich unter Debian), ist

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

Nun können Sie festlegen, sudo kill 1234wo 1234 die PID der PTS-Sitzungen ist.

jwbensley
quelle