J'étais googler cela il y a un peu et j'ai remarqué plusieurs façons, mais je suppose que Google ne sait pas tout. Alors, comment coupez- vous les utilisateurs de votre machine Linux? aussi comment allez-vous voir s'ils sont connectés en premier lieu? et connexes ... votre méthode fonctionne-t-elle si l'utilisateur est connecté à un DE X11 (ce n'est pas une exigence, je suis simplement curieux)?
users
administration
xénoterracide
la source
la source
who(1)
ouw(1)
. Le seul moyen infaillible de se débarrasser des éventuels rootkits pouvant être installés consiste à nettoyer et à réinstaller complètement le système.Réponses:
Il y a probablement un moyen plus facile, mais je fais ceci:
Voir qui est connecté à votre machine - utilisez
who
ouw
:Recherchez l'ID de processus du shell auquel leur TTY est connecté:
Riez de leur déconnexion imminente (cette étape est facultative, mais encouragée)
Tuez le processus correspondant:
Je viens de découvrir que vous pouvez combiner les étapes 1 et 2 en donnant
who
le-u
drapeau; le PID est le numéro à droite:la source
kill -9
hein? Vous êtes vraiment en mode BOFH sur celui-ci.kill -9
et de commencer avec des signaux plus doux , mais je suppose que dans ce contexte, cela n'a pas tellement d'importance. Je laisse juste un commentaire au cas où les gens rateraient la blague.Comme Micheal l’a déjà fait remarquer, vous pouvez utiliser celui
who
qui est connecté. Toutefois, s’ils ont plusieurs processus, il existe un moyen plus pratique quekillall -u username
de supprimer chaque processus individuellement: vous pouvez supprimer tous les processus de cet utilisateur.la source
killall
sera également légèrement plus appropriée dans les environnements graphiques, car il ne suffit pas d'un shell à tuer.Nécromancie!
J'apprécie l'humour de la réponse acceptée, mais professionnellement, je ne peux pas le défendre.
La méthode la plus gracieuse que je connaisse consiste à envoyer un -HUP au shell pour simuler le raccrochage de l'utilisateur. Vous pouvez l'envoyer à l'utilisateur sshd inactif pour simuler la perte de leur connexion, ce qui déclenche le nettoyage de tout l'environnement du shell (y compris les enfants), ou l'envoyer à des shells imbriqués spécifiques (par exemple, ceux configurés à l'intérieur d'un multiplexeur de terminaux déconnecté). vous empêchent de démonter un système de fichiers) si vous voulez être vraiment précis.
Utiliser
write
pour envoyer des messages aux ptys inactifs avant de les démarrer est un passe-temps amusant.la source
echo "Hasta la vista, baby" | write user_name pty_name && sleep 30 && killall -u user_name -HUP
(la veille donne à l’utilisateur la possibilité de sauvegarder et de se déconnecter, mais vous ne l’utilisez probablement que pour un utilisateur qui a oublié de se déconnecter de toute façon)Déconnectez l'utilisateur 'nom d'utilisateur':
Voir
man skill
la source
Une autre commande utile est
pkill
icipkill -u username && pkill -9 -u username
.killall
Le désavantage est que, sur Solaris IIRC, cela signifie quelque chose de complètement différent. Vouspkill
disposez également d'options légèrement plus avancées.la source
Tout d'abord, cela indique un problème plus important. Si vous avez des utilisateurs que vous ne faites pas confiance sur votre système, vous devriez probablement le niveler et le re-image.
Dans cet esprit, vous pouvez effectuer tout ou partie des tâches suivantes:
la source
you have users that you don't trust on your system
... Ou peut-être que vous en tuez un comme un message aux autres. Après tout, le credo de l'administrateur système n'est-il pas "mieux vaut être craint que d'être aimé"? Machiavel devrait écrire un livre d’O'Reilly.J'ai regardé tout autour et je n'ai pas pu trouver un seul script pour automatiser cette tâche.
Ainsi, en fonction des solutions proposées ici, j'ai tout mélangé dans un script Bash interactif qui répertorie les utilisateurs et les sessions
who -u
pour que l'utilisateur choisisse ce qu'il doit faire.Vous pouvez alors soit:
killall -u <username> -HUP
kill <PID>
Toutes les informations requises proviennent de
who -u
et sont ensuite analysées à l'aide demapfile
etawk
.Je vais ajouter la possibilité d'envoyer un message en utilisant
write
plus tard (forking le processus avec un retard).Je vais probablement ajouter l'option de tuer une session spécifique avec
kill -9
aussi. Mais je n'ai eu aucun problème avec justekill
et comme indiqué par d'autres,kill -9
devrait être évité si possible.Vous pouvez vérifier le code sur github si vous voulez l'essayer ou en apprendre plus sur la façon dont je le fais de manière automatisée:
la source
En fin de compte, il s’agit d’identifier et de mettre fin aux processus possédés, associés ou créés par un identifiant utilisateur. Peu importe les commandes que vous utilisez pour atteindre cet objectif, tant que vous y arrivez.
Fondamentalement deux réponses ...
Option A: provoquer une déconnexion dudit utilisateur, quelle que soit la durée et le nombre de connexions qu'il possède. Cela impliquerait donc d'identifier les processus appartenant à un utilisateur, traçables par uid, et classés comme faisant partie d'un processus de connexion pour la distribution Linux donnée que vous exécutez. Réalisez qu'il existe des processus parents tels que SSH ou VNC avant la "connexion" et des processus enfants tels que GDM après la "connexion". Tuer un processus parent supprime généralement le processus enfant, mais pas toujours. Donc, vous voudriez tuer ces autres processus qui ne sont évidemment plus nécessaires après la déconnexion. En faisant tout cela, les tâches d'arrière-plan continueraient à s'exécuter ... car il s'agit d'un utilisateur bénin et vous souhaitez peut-être simplement les déconnecter. Autant que je sache,
/usr/bin/w
et/usr/bin/who
signalera qui est passé par le processus de connexion.option B: mettre fin à tous les processus appartenant à un utilisateur spécifique, ce qui signifierait simplement de tuer tous les processus appartenant à cet utilisateur; cela les déconnecterait également s'ils étaient connectés. Cela satisferait le système . Cela doit être simple
ps -ef | grep <uid>
et mettre fin à tous ces processus de manière acceptable.Fwiw dans SLES 11, il rapporte
kill -9
FTW!la source
À mon avis, il n’est pas vraiment utile de l’utiliser,
killall -u username
car si c’est le même utilisateur que vous, vous allez vous lancer. Ainsi ,kill
le processus sera une meilleure solution.la source
Cette commande a très bien fonctionné pour l'interface graphique, mon "significatif" refusant de se déconnecter de ...
Quelques détournements au cas où vous en auriez besoin.
la source