GNU/Linux >> Tutoriels Linux >  >> Linux

Qu'est-ce que le shell de connexion sous Linux ?

Le shell de connexion est le premier processus exécuté avec votre ID utilisateur lorsque vous vous connectez à une session interactive.

Cela peut sembler simple à première vue, mais si vous creusez profondément, cela pourrait devenir un peu déroutant. Pour comprendre, voyons revoir le processus de connexion dans les systèmes Linux.

Linux est un système multi-utilisateurs où plusieurs utilisateurs peuvent se connecter et utiliser le système en même temps.

Le premier processus d'un système Linux, que ce soit init ou systemd, démarre un programme getty. Ce getty, abréviation de 'get tty' (tty désigne des terminaux physiques ou virtuels), est responsable de la protection du système contre les accès non autorisés.

Lorsque vous essayez de vous connecter à un système Linux directement (si vous avez un serveur installé sur un système localement) ou via SSH (si vous avez le serveur sur un emplacement distant), getty vous invite (via le programme de connexion) à entrer votre nom d'utilisateur et lorsque le nom d'utilisateur est entré, il demande le mot de passe.

Vos entrées sont vérifiées par rapport aux informations stockées dans le fichier /etc/passwd. Les entrées du fichier /etc/passwd contiennent des informations telles que le nom d'utilisateur, l'ID utilisateur, le répertoire personnel et le premier programme à démarrer une fois la connexion réussie.

Comme vous pouvez le voir sur l'image ci-dessus, le premier programme à démarrer lorsque l'utilisateur abhishek se connecte. Pour les utilisateurs standard sous Linux, c'est le shell de connexion.

Il peut également y avoir d'autres valeurs dans le champ. Par exemple, sshd est un utilisateur système, pas un véritable utilisateur et il ne peut pas se connecter au système de manière interactive comme un utilisateur normal comme abhishek.

sshd:x:110:65534::/run/sshd:/usr/sbin/nologin

S'il n'y a pas d'entrée dans la colonne du premier programme/log in shell, la valeur par défaut est /bin/sh, c'est-à-dire le shell standard.

J'espère que ce n'était pas trop d'informations.

Shell de connexion vs shell sans connexion

Très bien, vous vous êtes donc connecté à un système et vous savez qu'il s'agit d'un shell de connexion. Mais qu'est-ce que ça veut dire? Existe-t-il également d'autres coquillages ? Où sont-ils ?

Sous Linux, lorsque vous exécutez un script shell, il s'exécute dans son propre shell (un shell non interactif). Vous pouvez démarrer un nouveau shell à partir de votre shell actuel (un shell interactif).

En termes techniques, il s'agit de sous-shell, mais plus sur ce sujet plus tard. Concentrons-nous sur le shell de connexion pour l'instant.

Fichiers de profil et RC pour le shell

Le shell de connexion lit la variable d'environnement et d'autres configurations à partir de /etc/profile et d'un fichier de profil dans le répertoire personnel. Cela vous permet d'avoir une complétion de tabulation, une sortie colorée et de définir d'autres éléments tels que umask, etc.

Vous savez probablement qu'il existe plusieurs shells disponibles pour les systèmes Linux. La plupart des distributions Linux utilisent le shell bash par défaut, mais vous pouvez installer un shell différent comme zsh ou Fish shell.

Si votre shell de connexion est bash, il lit à partir du fichier /etc/profile et ~/.bash_profile. Si votre shell de connexion est zsh, il lit depuis /etc/zprofile et ~/.zprofile.

Les fichiers du répertoire /etc définissent la configuration shell respective pour tous les utilisateurs du système. Ceci est normalement configuré par l'administrateur système.

Les fichiers du répertoire personnel de l'utilisateur sont évidemment spécifiques à l'utilisateur. Cela permet aux utilisateurs de créer un alias pour les commandes fréquemment utilisées ou d'utiliser une variable PATH personnalisée pour un programme.

Les shells sans connexion proviennent du shell de connexion et, par conséquent, ils obtiennent tout l'environnement défini par le shell de connexion via les fichiers de profil. En plus de cela, le shell interactif sans connexion peut définir ses propres variables d'environnement via les fichiers rc (configuration des ressources) dans /etc ou le répertoire personnel.

Pour le shell bash, il s'agit généralement des fichiers /etc/bash.bashrc et ~/.bash_rc tandis que pour le shell zsh, il s'agit de /etc/zshrc et ~/.zshrc.

Permettez-moi de montrer la différence avec un exemple pratique.

Remarquez comment l'invite du shell passe à la couleur verte ? C'est parce qu'il lit le fichier /etc/bash.bashrc et qu'Ubuntu a mis des paramètres supplémentaires dans ce fichier. L'invite colorée en fait partie.

Pour résumer :

  • Les fichiers de profil sont destinés aux shells de connexion interactifs. Les fichiers rc sont destinés aux shells interactifs sans connexion.
  • Les fichiers du répertoire /etc sont exécutés en premier, puis les fichiers du répertoire d'accueil.
  • Les shells interactifs sans connexion bénéficient à la fois des fichiers de profil et rc.

Comment savoir si vous êtes dans un login shell ?

C'est très simple en fait, du moins pour le shell bash. Pour le shell de connexion, le nom de l'exécutable du shell commence par - . Pour le shell sans connexion, c'est juste le nom du shell.

Vous savez comment vérifier la coque, n'est-ce pas ? Vous vérifiez la valeur de l'argument 0.

Sur Linux de bureau, vous n'utilisez pas de shell de connexion. Votre connexion est gérée par un gestionnaire d'affichage. C'est pourquoi lorsque vous ouvrez un terminal dans le bureau Linux, vous verrez que même le premier shell exécuté dans le terminal n'est pas un shell de connexion.

J'ai essayé de clarifier les choses à propos du shell de connexion ici. Cependant, si vous ne vous êtes jamais posé de questions sur ces choses, cela peut laisser des questions sans réponse. N'hésitez pas à le demander dans la section des commentaires et j'essaierai d'y répondre.

Si vous êtes un utilisateur expert qui lit ceci et que vous trouvez quelque chose d'incorrect sur le plan technique ou un point important manquant, veuillez me le faire savoir dans les commentaires.


Linux
  1. Qu'est-ce qu'un utilisateur Linux ?

  2. Qu'est-ce que Red Hat Linux ?

  3. UNIX / Linux :Qu'est-ce qu'un Shell ? Quels sont les différents coquillages ?

  4. Changer le shell par défaut sous Linux

  5. Que fait % dans les chaînes du shell Linux ?

Qu'est-ce que le sous-shell sous Linux ?

Qu'est-ce que Shebang dans Linux Shell Scripting ?

Qu'est-ce que la moyenne de charge sous Linux ?

Qu'est-ce qu'un fichier .bashrc sous Linux ?

8 types de shells Linux

Qu'est-ce qu'un fichier .sh ?