Aller au contenu

Terminal

Infrastructure

Programme (historiquement, appareil physique) qui affiche du texte et transmet les frappes du clavier à un shell local ou distant. Il ne fait qu'afficher et transmettre : le shell qui interprète les commandes tourne derrière lui, et on confond volontiers les deux. En réseau et en droit, le mot désigne tout autre chose : l'équipement en bout de ligne.

Schéma de séquence entre cinq acteurs : clavier, émulateur de terminal, pseudo-terminal (pty), shell et programme lancé. 1, le clavier envoie les frappes à l'émulateur de terminal ; 2, l'émulateur écrit des octets côté maître du pseudo-terminal ; 3, le shell lit les caractères côté esclave ; 4, le shell exécute la commande dans le programme lancé ; 5, ce programme renvoie au pseudo-terminal du texte et des séquences d'échappement ; 6, le pseudo-terminal les transmet à l'émulateur, qui en fait le rendu à l'écran.

Terminal n'est pas shell : Le terminal gère l'affichage, le clavier, les couleurs et le défilement ; le shell (bash, zsh, fish) interprète les commandes. Changer d'émulateur ne change pas le shell, et inversement.

Le mot sert ailleurs : En réseau et en droit, « terminal » désigne l'équipement en bout de ligne, pas une fenêtre de texte : l'article 82 de la loi Informatique et Libertés protège l'« équipement terminal » de l'utilisateur, et c'est de là que vient l'obligation de consentement aux cookies. Même mot, deux métiers : seul le contexte tranche.

Héritage matériel : À l'origine : des téléscripteurs, puis des écrans comme le VT100, reliés par câble à un ordinateur central. Le fichier de périphérique s'appelle encore tty, pour teletype, et personne ne songe à le renommer. Les émulateurs modernes, accélérés par carte graphique, imitent toujours fidèlement un écran de 1978, séquences d'échappement comprises ; le progrès sait rester fidèle à ses vieilles habitudes.

Pseudo-terminal : Le noyau fournit une paire pty (maître et esclave) : l'émulateur tient le côté maître, le shell lit et écrit côté esclave. SSH, tmux et screen reposent sur ce même mécanisme pour faire croire à un programme qu'un vrai écran l'écoute.

Côté sécurité : Un terminal interprète tout ce qu'il affiche : une ligne de journal, un nom de fichier ou une réponse de serveur qui contient des séquences d'échappement peut déplacer le curseur, réécrire ce qui précède, masquer du texte ou renommer la fenêtre. Afficher un fichier hostile n'est donc pas un geste neutre, et les options d'émulateur qui laissent un programme interroger le terminal et recevoir la réponse sur l'entrée standard sont désactivées par défaut, pour la bonne raison qu'elles permettaient de lui faire taper une commande. Côté noyau, l'ioctl TIOCSTI injectait des caractères dans la file d'entrée d'un terminal, évasion classique d'un environnement restreint : Linux permet désormais de la couper. À l'inverse, un attaquant qui n'a qu'un shell sans terminal commence souvent par s'allouer un pty, faute de quoi la demande de mot de passe de sudo et les outils interactifs refusent de fonctionner.

Explication de la marmotte

Le terminal, c'est une fenêtre où on parle à l'ordinateur en écrivant au lieu de cliquer. Tu tapes un ordre, par exemple « montre-moi les fichiers de ce dossier », tu appuies sur Entrée, et la réponse s'affiche en lignes de texte juste en dessous. C'est un peu comme échanger des textos avec l'ordinateur : la fenêtre joue le rôle du téléphone, elle transporte tes messages et affiche les réponses, mais celui qui comprend et obéit est un autre programme caché derrière. Ça paraît vieillot, pourtant les informaticiens l'adorent : c'est rapide, précis, et ça permet même de piloter un ordinateur situé à l'autre bout du monde.

Où ce terme est utilisé

← Tout le glossaire