Fermer une session TTY à distance
I. Présentation
Il peut parfois arriver que l'on oublie de fermer une session TTY (en connexion "physique") à une machine ou un serveur. Auquel cas il peut être pratique de savoir fermer cette connexion à distance (via SSH par exemple). C'est ce que nous allons voir dans ce tutoriel.
II. Fonctionnement
Pour mieux comprendre comment nous allons faire, il faut savoir que chaque action sur une machine est présente sous la forme d'un processus désigné par un numéro d'identification: le PID.
La commande POSIX "ps" nous permet d'afficher les processus en ligne de commande sous une machine UNIX :
ps -ef
Options :
- "-e" permet d'afficher tous les processus actifs
- "-f" permet d'avoir un affichage plus détaillé.
Nous verrons alors beaucoup de processus actifs, si on affiche un exemple de ces processus :
Nous pouvons ici voir plusieurs informations intéressantes. Ce qu'il faut savoir est que la première colonne désigne l'utilisateur qui a lancé la commande. La deuxième est le PID (identifiant du processus), la seconde est le PID du processus qui a lancé ce processus, vient ensuite l'heure, le terminal dans lequel le processus a été lancé, tty pour un terminal en accès physique et pts/ pour un accès SSH. Puis enfin la commande qui a lancé le processus en dernière colonne.
Il est important de savoir lire ce genre de données. Si nous prenons par exemple la première ligne, nous voyons qu'une connexion SSH a été lancée et que celle si opère sur le PID 1605. En seconde ligne nous voyons qu'un bash a été initialisé sur un terminal "pts/0" ce qui indique que quelqu'un est en ce moment connecté sur un terminal via une connexion SSH dont le pid est 1617.
On peut ensuite voir en troisième ligne qu'un login a été lancé, "/bin/login" est l'outil qui sert à démarrer une session sur le systèmes (cf "man login"), identifié ici avec le PID 1690. On voit ensuite sur la ligne suivante le PID 1705 avec comme parent 1690. On sait donc ici précisément quel "-bash" appartient à quel processus parent.
On remarque également notre propre commande "ps -ef" identifiée comme les autres avec un PID.
III Identifier et fermer la session
Maintenant que nous savons voir nos processus. Nous pouvons nous intéresser à savoir comment voir qui est sur notre serveur. On peut pour cela utilisé la comme "w" (pour "who") qui nous listera les sessions actives avec un shell sur notre serveur :
w
Nous aurons alors ce type de résultat :
Nous voyons ici à nouveau qui est sur notre serveur (une session en TTY et nous en PTS), l'heure du login, la commande exécutée. Nous voyons par exemple si que la personne connectée sur la session tty1 est en train de lire le fichier "/etc/passwd".
Afin d'avoir une vue plus simple de qui est connectée en tty et de récupérer son PID, nous utiliserons la commande suivante :
ps -ef | grep tty
On filtre ici nos processus en affichant uniquement ceux lancés par un "tty". Nous aurons alors ce type de retour :
Nous aurons alors le PID de notre session TTY1 que nous pourrons tuer avec la commande suivante :
kill -9 2491
- "2491" étant le PID en question.
La session TTY1 sera ainsi fermée. Notons que la commande "kill -9 " peut fonctionner pour tous les autres processus actifs et pas seulement pour la fermeture d'un TTY.