Forcer la déconnexion d'un utilisateur

60

I Lorsque je me suis connecté à la machine en tant que rootet que j'ai tapé whopour voir quels utilisateurs étaient connectés, j'ai trouvé quelqu'un d'autre qui était également connecté en tant que root.

devuser   pts/0        2011-11-18 09:55 (xxx.xxx.xxx.xxx)
root      pts/1        2011-11-18 09:56 (xxx.xxx.xxx.xxx)
testuser  pts/2        2011-11-18 14:54 (xxx.xxx.xxx.xxx)
root      pts/3        2011-11-18 14:55 (xxx.xxx.xxx.xxx)

Comment puis-je forcer un utilisateur root à pts / 3 à se déconnecter?

Mithun Sreedharan
la source
9
Vous avez un problème encore plus important à résoudre. Désactivez les connexions directes à la racine et forcez vos utilisateurs à utiliser sudo.
Xenoactive

Réponses:

55

Vous terminez une session en supprimant son processus parent, appelé responsable de session. Découvrez quel processus il est avec:

ps -dN|grep pts/3
Fabel
la source
10
Et puis tuez ce processus en utilisantkill -9 <processid>
Mithun Sreedharan
5
Juste kill <pid>devrait être suffisant, non? Conservez le kill -9s pour les processus qui se conduisent mal et qui ne répondent pas à INT, HUP ou TERM; c'est un peu comme la différence entre éteindre un ordinateur à l'aide du système de menus du système d'exploitation et débrancher l'ordinateur.
TheDudeAbides
26

Pour tuer et déconnecter un utilisateur, vous pouvez envoyer le signal KILL. Tapez la commande suivante:

# skill -KILL -u vivek

Vérifiez ces liens pour plus d'informations:

Niranjan Singh
la source
6
Et si je suis connecté en tant que même utilisateur?
Mithun Sreedharan
cette commande fonctionne pour le super utilisateur .. vous devez vous connecter en tant que super utilisateur .. les systèmes d'exploitation réseau suivent cette approche pour la sécurité .. Je pense que ces liens disent également la même chose pour se connecter en tant qu'administrateur ..
Niranjan Singh
ça m'a mis à la porte sudo su -aussi, même si j'étais root, mais je suppose que je n'étais pas à la fin. revenir dans le serveur m'a montré que le seul. J'ai eu 4 cas de moi-même, je suppose que je dirais.
pjammer
5
@Mithun Vous pouvez utiliser à la -t <terminal name>place de -u.
Melebius
1
Le lien cyberciti indique à présent "AVERTISSEMENT! Ces outils sont obsolètes, impossibles à transporter et ils sont ici pour des raisons historiques. Pensez à utiliser les commandes killall, pkill et pgrep comme suit." pkill -KILL -u vivekfonctionne tout aussi bien.
EM0
0

Améliorer un peu la réponse de Fabel ci-dessus:

\# *for pid in $(for ptsn in $(w | grep **user_name** | grep pts | awk '{print $2}'); do ps -dN | grep "$ptsn " | awk '{print $1}' ; done); do kill -9 $pid; done*
collisio
la source