Recherche de site Web

Comment modifier le shell utilisateur par défaut sous Linux


Le shell, ou interface de ligne de commande, est un composant crucial du système d'exploitation Linux, offrant aux utilisateurs un moyen puissant d'interagir avec le système.

Chaque utilisateur sur un système Linux est associé à un shell par défaut, qui détermine l'interpréteur de commandes qu'il utilise lors de son interaction avec le système.

Changer le shell par défaut d'un utilisateur peut être nécessaire pour diverses raisons, telles que les préférences personnelles ou le besoin de fonctionnalités spécifiques offertes par un autre shell.

Dans cet article, nous explorerons le processus de modification du shell par défaut d’un utilisateur sous Linux. Le shell est un programme qui accepte et interprète les commandes ; il existe plusieurs shells open source tels que bash, sh, ksh, zsh, fish, et de nombreux autres shells moins connus disponibles sous Linux.

Shell Bash Linux

Bash (/bin/bash) est un shell populaire sur la plupart sinon toutes les distributions Linux, et c'est normalement le shell par défaut pour les comptes d'utilisateurs.

Il existe plusieurs raisons de modifier le shell d’un utilisateur sous Linux, notamment les suivantes :

  • Pour bloquer ou désactiver les connexions utilisateur normales sous Linux à l’aide d’un shell nologin.
  • Utilisez un script ou un programme wrapper shell pour enregistrer les commandes utilisateur avant qu'elles ne soient envoyées à un shell pour exécution. Ici, vous spécifiez le wrapper du shell en tant que shell de connexion d'un utilisateur.
  • Pour répondre aux demandes d’un utilisateur (veut utiliser un shell spécifique), notamment ceux disposant de droits d’administration.

Lors de la création de comptes utilisateur avec les utilitaires useradd ou adduser, l'indicateur --shell peut être utilisé pour spécifier le nom du shell de connexion d'un utilisateur autre que celui spécifié dans les fichiers de configuration respectifs.

Un shell de connexion est accessible à partir d’une interface textuelle ou via un SSH à partir d’une machine Linux distante. Cependant, si vous vous connectez via une interface utilisateur graphique (GUI), vous pouvez accéder au shell à partir d'émulateurs de terminal tels que xterm, konsole et bien d'autres.

Liste des shells disponibles sur un système Linux

Sous 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 les shells disponibles que les utilisateurs peuvent définir comme shell par défaut à l'aide de 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

Exemple de résultat :

/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 d'aller plus loin, notez que :

  • Un utilisateur peut changer son propre shell en n'importe quoi : ce qui doit cependant être répertorié dans le fichier /etc/shells.
  • Seul root peut exécuter un shell non répertorié dans le fichier /etc/shells.
  • Si un compte dispose d’un shell de connexion restreint, seul le root peut modifier le shell de cet utilisateur.

Trouver le shell actuel sous Linux

Avant de modifier le shell d'un utilisateur par défaut, il est important de déterminer le shell actuel en exécutant la commande echo suivante, qui affiche le shell actuel pour l'utilisateur connecté.

echo $SHELL

/bin/bash

Le résultat montre que l'utilisateur utilise actuellement le shell Bash (/bin/bash).

Changer le shell par défaut sous Linux

Voyons maintenant trois manières différentes de modifier le shell utilisateur Linux par défaut.

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é pour modifier le shell de connexion de l'utilisateur.

Dans cet exemple, nous allons d'abord vérifier les informations du compte de l'utilisateur tecmint pour afficher son shell de connexion par défaut, puis modifier 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

Désormais, le shell par défaut de l'utilisateur « tecmint » sera remplacé par bash.

2. Utilitaire chsh

La commande chsh est utilisée pour modifier de manière interactive le shell de connexion par défaut de l'utilisateur 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 sur sh, vous utiliserez « /bin/sh ».

Il est important de noter que les modifications apportées au shell par défaut prennent généralement effet lors de votre prochaine connexion.

Les deux méthodes modifient avant tout le shell spécifié dans le fichier /etc/passwd que vous pouvez éditer manuellement comme dans la troisième méthode ci-dessous.

3. Modifiez 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 shell en shell souhaité, spécifiez simplement le chemin d'accès à un shell (/bin/zsh), comme indiqué.

tecmint:x:1000:1000:John Doe:/home/tecmint:/bin/zsh

Lorsque vous avez terminé l'édition, enregistrez et fermez le fichier.

Comment installer un autre shell ?

Semblables à d’autres progiciels, les shells populaires tels que Zsh et Fish peuvent être facilement installés à partir du référentiel de votre distribution, comme indiqué.

Installer Zsh Shell sous Linux

Pour installer Zsh sur Linux, utilisez la commande suivante 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 sous Linux

Pour installer Zsh sur Linux, utilisez la commande suivante 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 différentes manières de modifier le shell d’un utilisateur sous Linux. Pour partager vos réflexions avec nous, utilisez la section commentaires ci-dessous.