Aller au contenu

Infrastructure

Shell, « coquille » : l'interpréteur de commandes qui enrobe le noyau du système et sert d'intermédiaire avec l'utilisateur. Il lit une ligne de texte, l'analyse, lance les programmes demandés et rend la main avec leur code de retour. Sur Linux et macOS on croise surtout Bash, Zsh ou Fish ; sous Windows, PowerShell ou le vieux cmd, que personne n'a eu le cœur de débrancher.

Schéma de séquence entre cinq acteurs : Utilisateur, Terminal, Shell, Noyau et Programme. L'utilisateur tape une commande dans le terminal, qui transmet la ligne de texte au shell. Si la commande est interne, le shell l'exécute lui-même directement. Si elle est externe, le shell demande au noyau de lancer le programme, le noyau l'exécute, puis la sortie du programme s'affiche dans le terminal.

Interpréteur et langage : Un shell est aussi un langage de programmation : variables, conditions, boucles, fonctions. Le même texte se tape à la main pour une fois, ou se range dans un fichier pour mille fois, c'est toute la différence entre une commande et un script.

Shell n'est pas terminal : Le terminal (ou émulateur de terminal) affiche le texte et capte le clavier ; le shell interprète ce qu'on y tape. On peut changer de shell sans changer de terminal, et inversement.

Redirections et tubes : Les redirections (>, <) et le tube (|) branchent les programmes entre eux : la sortie de l'un devient l'entrée du suivant. C'est le cœur de la philosophie Unix, des petits outils assemblés à la volée.

Côté sécurité : « Obtenir un shell » sur une machine, c'est pouvoir y exécuter des commandes arbitraires : beaucoup d'attaques n'ont pas d'autre ambition. Le reverse shell fait se connecter la victime vers l'attaquant, pour sortir par un pare-feu qui ne surveille que les entrées ; le web shell est un script déposé sur un serveur web, qui exécute les commandes reçues en paramètre. L'injection de commandes, elle, exploite un programme qui passe une entrée non filtrée au shell.

Explication de la marmotte

Imagine un serveur dans un restaurant. Tu ne vas pas en cuisine pour parler aux cuisiniers : tu dis au serveur « une pizza et une eau », il comprend ta demande, la transmet à la cuisine, puis te rapporte ton plat. Le shell joue ce rôle avec l'ordinateur. Tu écris une petite phrase dans une fenêtre de texte, par exemple « montre-moi ce qu'il y a dans ce dossier ». Il la comprend, demande à l'ordinateur de faire le travail et t'affiche la réponse. Tu peux aussi lui donner une liste d'ordres à suivre l'un après l'autre, comme une recette de cuisine. Il fait alors tout seul des tâches répétitives qui te prendraient des heures à la main.

Où ce terme est utilisé

← Tout le glossaire