février 27, 2022

Modification du Shell par défaut sous Linux

Aperçu

Un shell interactif lit les commandes de l’entrée utilisateur sur un terminal ats. Nous appelons le shell interactif après la connexion réussie d’un utilisateur le shell par défaut ou le shell de connexion.

Dans ce tutoriel, nous allons discuter de la façon de changer le shell par défaut d’un utilisateur.

Introduction à la commande chsh

La commande chsh est livrée avec le paquet util-linux — un paquet standard disponible sur toutes les distributions Linux.

En utilisant la commande chsh avec l’option -l, nous pouvons lister les shells installés dans le système actuel:

$ chsh -l/bin/sh/bin/bash/bin/zsh/usr/bin/zsh/usr/bin/git-shell

Une utilisation plus courante de la commande chsh consiste à modifier le shell par défaut d’un utilisateur.

Nous aborderons comment faire cela dans les sections suivantes.

Quel Shell Utilise-T-On Actuellement ?

Après une connexion réussie, nous serons avec notre shell par défaut.

Avant de parler de la modification du shell par défaut, apprenons d’abord quelques façons de savoir quel shell nous utilisons actuellement.

Une façon consiste à lire l’environnement systèmeSHELLSHELL, qui stocke la commande shell en cours d’exécution:

kent$ echo $SHELL/bin/zsh

Comme le montre l’exemple ci-dessus, le shell en cours d’exécution de mon utilisateur de connexion actuel est Zsh.

Alternativement, nous pouvons connaître le shell en cours d’exécution en explorant ses informations de processus. Linux stocke le PID du shell en cours d’exécution dans la variable spéciale $$:

kent$ echo $3492

Dans l’exemple ci-dessus, le processus avec PID 153492 serait le processus shell actuel. Nous pouvons obtenir des informations détaillées sur le processus en utilisant la commande ps avec l’option -p:

kent$ ps -p $$ PID TTY TIME CMD 153492 pts/2 00:00:00 zsh

La sortie nous indique que Zsh est notre shell actuel.

Modification du Shell par défaut de l’Utilisateur actuel

Si nous voulons changer le shell par défaut de l’utilisateur de connexion actuel, nous pouvons exécuter la commande chsh avec l’option -s <NEW_SHELL >.

Changeons le shell par défaut de l’utilisateur actuel en Bash:

kent$ chsh -s /bin/bashChanging shell for kent.Password: Shell changed.

Il est intéressant de mentionner qu’après avoir modifié avec succès le shell par défaut, le shell en cours d’exécution ne sera pas modifié. Par exemple, nous avons défini Bash comme shell par défaut de l’utilisateur kent, mais le shell actuel est toujours Zsh:

kent$ ps -p $$ PID TTY TIME CMD 153492 pts/2 00:00:00 zsh

Le shell par défaut nouvellement modifié prendra effet la prochaine fois que nous nous connecterons avec l’utilisateur kent.

La commande shell par défaut est essentielle pour la connexion des utilisateurs. Si la commande n’est pas valide, nous aurons du mal à nous connecter avec l’utilisateur.

Par conséquent, comme nous changeons le shell par défaut, la commande chsh vérifiera si la commande shell donnée est valide.

Voyons ce qui se passera si nous passons un chemin non valide à la commande chsh:

kent$ chsh -s /bin/bashhhhChanging shell for kent.Password: chsh: "/bin/bashhhh" does not exist

Nous avons appris que la commande chsh peut répertorier les shells actuellement installés dans le système.

La commande chsh refusera de changer le shell par défaut si le shell donné ne figure pas sur la liste des shell valides du système:

kent$ chsh -s /usr/bin/catChanging shell for kent.Password: chsh: "/usr/bin/cat" is not listed in /etc/shells.Use chsh -l to see list.

Dans l’exemple ci-dessus, nous avons tenté de définir la commande /usr/bin/cat comme shell par défaut de l’utilisateur kent.

Le chemin de commande cat est valide. Cependant, il ne figure pas sur la liste shell. Par conséquent, chsh a abandonné avec le message d’erreur et l’indice correspondants.

Modification du shell par défaut des Autres utilisateurs

Jusqu’à présent, nous avons appris à utiliser la commande chsh pour modifier le shell par défaut de l’utilisateur de connexion actuel.

Nous pouvons également modifier le shell par défaut des autres utilisateurs à l’aide de la commande chsh, mais nous avons besoin de l’autorisation root pour le faire.

La syntaxe est assez simple:

root# chsh -s NEW_SHELL USERNAME

Cette fois, nous nous connectons en tant qu’utilisateur root et changeons le shell par défaut de l’utilisateur kent en /bin/sh:

root# chsh -s /bin/sh kent Changing shell for kent.Shell changed.

Maintenant, reconnectons-nous avec l’utilisateur kent et vérifions si le shell par défaut a été modifié avec succès:

sh-5.1$ echo $SHELL/bin/sh

Comme le montre la sortie ci-dessus, le shell par défaut de l’utilisateur kent est maintenant /bin/sh.

Modification du fichier /etc/passwd

Nous avons appris à utiliser la commande chsh pour modifier le shell par défaut d’un utilisateur. Alternativement, nous pouvons également le faire en éditant le fichier /etc/passwd.

Sous Linux, le fichier /etc/passwd est un fichier texte brut. Il stocke les informations de compte d’utilisateur, qui sont requises lors de la connexion de l’utilisateur:

-rw-r--r-- 1 root root 2.1K Mar 12 10:27 /etc/passwd

Si nous regardons ses indicateurs d’autorisation, nous verrons que tous les utilisateurs peuvent le lire, mais seul l’utilisateur root est autorisé à écrire dans /etc/passwd.

Vérifions le contenu du fichier /etc/passwd:

kent$ cat /etc/passwdroot:x:0:0:root:/root:/bin/zshbin:x:1:1:bin:/bin:/bin/false...kent:x:1000:1000::/home/kent:/bin/zshguest:x:1001:1001::/home/guest:/bin/zsh...cups:x:209:209:cups helper user:/:/sbin/nologin...

Chaque ligne du fichier enregistre les informations de compte d’un utilisateur. Les champs d’un enregistrement sont séparés par des deux-points.

Un enregistrement contient les données de compte de l’utilisateur, telles que le nom d’utilisateur, l’UID, le GID et le répertoire personnel, entre autres. Le dernier champ indique le shell par défaut de l’utilisateur.

Si nous modifions le champ shell par défaut dans le fichier /etc/passwd, il prendra effet lorsque l’utilisateur se connectera ensuite au système la prochaine fois.

Un avantage de l’édition du fichier /etc/passwd est que nous pouvons changer le shell par défaut de plusieurs utilisateurs en une seule fois. Parfois, cela pourrait être assez pratique.

Cependant, nous devons garder à l’esprit que lorsque nous enregistrons le fichier /etc/passwd, aucune validation ou vérification n’aura lieu sur les shells par défaut modifiés.

Par conséquent, nous devons nous assurer d’avoir donné des chemins de commande shell valides. Sinon, l’utilisateur aura un problème pour se connecter au système la prochaine fois.

Conclusion

Dans cet article rapide, nous avons appris à modifier le shell par défaut d’un utilisateur à travers des exemples.

La commande chsh est assez simple pour la tâche. De plus, il peut vérifier si le shell donné est valide dans le système.

Si nous voulons changer le shell par défaut d’un utilisateur autre que celui de connexion actuel, nous devons exécuter la commande chsh avec l’autorisation de l’utilisateur root.

De plus, si nous pouvons nous connecter en tant qu’utilisateur root, nous pouvons également modifier le shell par défaut de plusieurs utilisateurs en éditant directement le fichier /etc/passwd.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.