Wie kann ich andere Benutzer zum Abmelden zwingen?

14

Gibt es eine einfache Möglichkeit, einen anderen Benutzer von einer Linux-Box zu entfernen, während ich als root angemeldet bin? Ich verstehe, dass ich bestimmen könnte, welche Art von Sitzung sie geöffnet haben, und die PID töten könnte - aber ich denke, dass es einen Befehl geben muss, um dies zu tun, von dem ich nichts weiß.

Irgendwelche Ideen?

Brent
quelle

Antworten:

15

Du kannst slay(1)ihn einfach . :-)

David Schmitt
quelle
Ha! Ordentlich. Ich hatte noch nie von diesem Befehl gehört. Ist es auf allen Systemen verfügbar? Sicher sieht es so aus, als ob es besser wäre, ihren Shell-Prozess zu beenden.
Jonathon Watney
Es ist wahrscheinlich für alle Distributionen verpackt, aber wenn Sie etwas brauchen, das überall funktioniert, sind Fähigkeiten von Procps - wie Mihai betont - möglicherweise die bessere Wahl. Es hat aber weniger Stil ;-)
David Schmitt
1
openSuse 11.4 - Slay: Befehl nicht gefunden :( :(
usr-local-ΕΨΗΕΛΩΝ
Auf den derzeit verfügbaren Ubuntu 12.04- oder RHEL 3-Hosts nicht installiert, habe ich den skillvon Mihai Limbăşan beschriebenen Befehl. YMMV
David
Installieren Sie es aus dem Universum: packages.ubuntu.com/search?keywords=slay
David Schmitt
10

Sie können alle Prozesse eines Benutzers über beenden skill. Beispiel:

  • skill -TERM -u username

SIGTERM wird an alle usernameProzesse gesendet . Um sie endgültig zu töten (über SIGKILL), verwenden Sie -KILL anstelle von -TERM - beachten Sie jedoch, dass Sie höchstwahrscheinlich dazu führen werden, dass sie auf diese Weise Daten verlieren. Es ist sehr effektiv, wohlgemerkt ...

skillist Teil des procpsPakets, das standardmäßig von allen Distributionen installiert wird.

Mihai Limbăşan
quelle
Für andere Benutzer, die dies für alle Remotebenutzersitzungen ausführen möchten, ist das Flag -v ( -v pts/*) auf der Manpage möglicherweise hilfreich.
David
2

Die pkillund killallwerden vorgezogen skill. Dies ist aus der skillManpage:

Diese Tools sind wahrscheinlich veraltet und nicht mehr portierbar. Die Befehlssyntax ist schlecht definiert. Betrachten wir mit den killall, pkillund pgrepstattdessen Befehle.

Dies sollte den Trick machen:

sudo pkill -KILL -u [user]

oder

sudo killall -u [user]
David
quelle
0

Eine weitere einfache Möglichkeit , es zu tun ist , zu laufen , kill -1 <pid>wo pid die Prozess - ID - Nummer der SSH - Sitzung ist.

Wenn Sie diesen Befehl ausführen, werden alle sshd- Prozessbäume angezeigt. Wenn Sie die übergeordnete Prozess-ID beenden , wird die zugehörige Benutzersitzung beendet:

$ ptree -p

Suchen Sie nach sshd und führen Sie dann Folgendes aus:

$ kill -1 39383

Wobei 39383 ein Beispiel für eine beliebige Prozess-ID-Nummer ist.

Ja, Barry
quelle