La shell, ou interface en ligne de commande, est un composant crucial du système d’exploitation Linux, offrant aux utilisateurs une puissante manière d’interagir avec le système.
Chaque utilisateur d’un système Linux est associé à une shell par défaut, qui détermine l’interpréteur de commandes qu’il utilise pour interagir avec le système.
Changer la shell par défaut d’un utilisateur peut être nécessaire pour diverses raisons, telles que les préférences personnelles ou la nécessité d’avoir des fonctionnalités spécifiques offertes par une autre shell.
Dans cet article, nous explorerons le processus de modification de la shell par défaut d’un utilisateur sous Linux. Une shell est un programme qui accepte et interprète des commandes ; il existe plusieurs shells open-source telles que bash, sh, ksh, zsh, fish, et de nombreux autres shells moins connus disponibles sous Linux.
Shell Linux Bash
Bash (/bin/bash) est une shell populaire sur la plupart, si pas toutes les distributions Linux, et il est normalement la shell par défaut pour les comptes utilisateurs.
Il existe plusieurs raisons pourchanger la shell d’un utilisateur sous Linux, y compris les suivantes :
- Pour bloquer ou désactiver les connexions d’utilisateurs normaux dans Linux en utilisant un shell nologin.
- Utilisez un script ou un programme d’enveloppe de shell pour enregistrer les commandes utilisateur avant qu’elles ne soient envoyées à un shell pour exécution. Ici, vous spécifiez l’enveloppe de shell comme shell de connexion de l’utilisateur.
- Pour répondre aux demandes de l’utilisateur (souhaite utiliser un shell spécifique), en particulier ceux ayant des droits d’administration.
Lors de la création de comptes utilisateur avec les utilitaires useradd ou adduser, le drapeau --shell
peut être utilisé pour spécifier le nom du shell de connexion de l’utilisateur autre que celui spécifié dans les fichiers de configuration respectifs.
A login shell can be accessed from a text-based interface or via an SSH from a remote Linux machine. However, if you log in via a graphical user interface (GUI), you can access the shell from terminal emulators like xterm, konsole, and many more.
Liste des shells disponibles sur un système Linux
Dans Linux, le fichier /etc/shells est couramment utilisé pour stocker une liste des shells de connexion valides installés sur le système. Ce fichier aide à identifier quels shells sont disponibles pour les utilisateurs afin de les définir comme shell par défaut en utilisant des commandes telles que chsh.
Pour afficher la liste des shells disponibles sur un système Linux, vous pouvez utiliser la commande suivante:
cat /etc/shells
Sortie d’exemple:
# /etc/shells: valid login shells /bin/sh /bin/bash /usr/bin/bash /bin/rbash /usr/bin/rbash /bin/dash /usr/bin/dash /usr/bin/tmux /usr/bin/screen
Avant de continuer, notez que :
- A user can change their own shell to anything: which, however, must be listed in the /etc/shells file.
- Seul root peut exécuter un shell qui n’est pas répertorié dans le fichier /etc/shells.
- Si un compte a un shell de connexion restreint, alors seul root peut changer le shell de cet utilisateur.
Trouver le shell actuel dans Linux
Avant de changer le shell d’un utilisateur par défaut, il est important de déterminer le shell actuel en exécutant la commande echo, qui affiche le shell actuel pour l’utilisateur connecté.
echo $SHELL /bin/bash
La sortie indique que l’utilisateur utilise actuellement le shell Bash (/bin/bash).
Changement du Shell par Défaut sous Linux
Parlons maintenant de trois façons différentes de changer le shell par défaut d’un utilisateur Linux.
1. Utilitaire usermod
La commande usermod est utilisée pour modifier les détails du compte d’un utilisateur, stockés dans le fichier /etc/passwd et l’option -s
ou --shell
est utilisée pour changer le shell de connexion de l’utilisateur.
Dans cet exemple, nous allons d’abord vérifier les informations de compte de l’utilisateur tecmint pour voir son shell de connexion par défaut, puis changer son shell de connexion de /bin/sh à /bin/bash comme suit.
grep tecmint /etc/passwd sudo usermod --shell /bin/bash tecmint grep tecmint /etc/passwd

Maintenant, le shell par défaut pour l’utilisateur « tecmint » sera changé en bash.
2. Utilitaire chsh
La commande chsh est utilisée pour changer le shell de connexion par défaut de l’utilisateur de manière interactive en utilisant l’option -s
ou –shell comme indiqué.
grep tecmint /etc/passwd sudo chsh --shell /bin/sh tecmint grep tecmint /etc/passwd

Remplacez « /bin/sh » par le chemin réel vers le shell que vous souhaitez définir. Par exemple, pour définir le shell comme étant « sh« , vous utiliseriez « “/bin/sh“.
Il est important de noter que les changements apportés au shell par défaut prennent généralement effet lors de votre prochaine connexion.
Les deux méthodes ci-dessus modifient tous les deux le shell spécifié dans le fichier « /etc/passwd« , que vous pouvez éditer manuellement comme dans la troisième méthode ci-dessous.
3. Changer le Shell Utilisateur dans le Fichier /etc/passwd
Dans cette méthode, ouvrez simplement le fichier « /etc/passwd » à l’aide de l’un de vos éditeurs de texte en ligne de commande préférés et modifiez le shell d’un utilisateur spécifique.
sudo vi /etc/passwd OR sudo nano /etc/passwd

Localisez la ligne correspondant à l’utilisateur pour lequel vous souhaitez modifier le shell par défaut. Par exemple, si la ligne ressemble à ceci:
tecmint:x:1000:1000:John Doe:/home/tecmint:/bin/bash
Le dernier champ, « /bin/bash« , représente le shell par défaut (dans ce cas, « Bash« ).
Pour modifier la valeur du champ du shell avec le shell souhaité, spécifiez simplement le chemin vers un shell (/bin/zsh) comme indiqué.
tecmint:x:1000:1000:John Doe:/home/tecmint:/bin/zsh
Lorsque vous avez terminé d’éditer, enregistrez et fermez le fichier.
Comment Installer un Autre Shell?
De la même manière que pour les autres paquets de logiciels, les shells populaires tels que Zsh et Fish peuvent être facilement installés à partir du dépôt de votre distribution comme indiqué.
Installer le Shell Zsh sous Linux
Pour installer « Zsh » sous Linux, utilisez la commande appropriée pour votre distribution Linux spécifique.
sudo apt install zsh [On Debian, Ubuntu and Mint] sudo yum install zsh [On RHEL/CentOS/Fedora and Rocky/AlmaLinux] sudo emerge -a sys-apps/zsh [On Gentoo Linux] sudo apk add zsh [On Alpine Linux] sudo pacman -S zsh [On Arch Linux] sudo zypper install zsh [On OpenSUSE]
Installer Fish Shell dans Linux
Pour installer Zsh sur Linux, utilisez la commande appropriée pour votre distribution Linux spécifique.
sudo apt install fish [On Debian, Ubuntu and Mint] sudo yum install fish [On RHEL/CentOS/Fedora and Rocky/AlmaLinux] sudo emerge -a sys-apps/fish [On Gentoo Linux] sudo apk add fish [On Alpine Linux] sudo pacman -S fish [On Arch Linux] sudo zypper install fish [On OpenSUSE]
N’oubliez pas de lire ces sujets connexes :
Dans cet article, nous avons décrit diverses façons de changer le shell d’un utilisateur dans Linux. Pour partager vos réflexions avec nous, utilisez la section de commentaires ci-dessous.
Source:
https://www.tecmint.com/change-a-users-default-shell-in-linux/