Comment forcer d'autres utilisateurs à se déconnecter?

14

Existe-t-il un moyen simple de forcer un autre utilisateur à quitter une boîte Linux, alors que je suis connecté en tant que root? Je comprends que je pourrais déterminer quel type de session ils ont ouvert et tuer le pid - mais je pense qu'il doit y avoir une commande pour faire cela que je ne connais pas.

Des idées?

Brent
la source

Réponses:

15

Vous pouvez simplement slay(1)lui. :-)

David Schmitt
la source
Ha! Soigné. Je n'avais jamais entendu parler de cette commande auparavant. Est-il disponible sur tous les systèmes? Bien sûr, il semble que cela bat le processus de shell.
Jonathon Watney
Il est probablement emballé pour toutes les distributions, mais si vous avez besoin de quelque chose qui fonctionne partout, les compétences de procps --- comme le souligne Mihai --- pourraient être un meilleur choix. Il a cependant moins de style ;-)
David Schmitt
1
openSuse 11.4 - slay: commande introuvable :( :(
usr-local-ΕΨΗΕΛΩΝ
Non installé sur les hôtes Ubuntu 12.04 ou RHEL 3 que j'ai actuellement disponibles, j'ai la skillcommande détaillée par Mihai Limbăşan. YMMV
David
Installez-le depuis l'univers: packages.ubuntu.com/search?keywords=slay
David Schmitt
10

Vous pouvez tuer tous les processus d'un utilisateur via skill. Exemple:

  • skill -TERM -u username

enverra SIGTERM à tous usernameles processus de. Pour les tuer définitivement (via SIGKILL), utilisez -KILL au lieu de -TERM - veuillez noter, cependant, que vous leur ferez très probablement perdre des données de cette façon. C'est très efficace, attention ...

skillfait partie du procpspackage qui est installé par défaut par toutes les distributions.

Mihai Limbăşan
la source
Pour d'autres qui souhaitent le faire pour toutes les sessions utilisateur distantes, l'indicateur -v ( -v pts/*), qui se trouve dans la page de manuel, peut être utile.
David
2

Le pkillet killallsont préférés skill. C'est à partir de la skillpage de manuel:

Ces outils sont probablement obsolètes et non transférables. La syntaxe de commande est mal définie. Pensez à utiliser les killall, pkillet les pgrepcommandes à la place.

Cela devrait faire l'affaire:

sudo pkill -KILL -u [user]

ou

sudo killall -u [user]
David
la source
0

Une autre façon simple de le faire est d'exécuter kill -1 <pid>pid est le numéro d'identification du processus de la session SSH.

En exécutant cette commande, vous pouvez voir toutes les arborescences de processus sshd , en supprimant l'ID de processus parent, vous tuerez efficacement la session utilisateur qui lui est associée:

$ ptree -p

Recherchez sshd puis exécutez:

$ kill -1 39383

39383 est un exemple de numéro d'identification de processus arbitraire.

Oui Barry
la source