3 formas de cambiar la shell predeterminada de un usuario en Linux

La shell, o interfaz de línea de comandos, es un componente crucial del sistema operativo Linux, proporcionando a los usuarios una forma poderosa de interactuar con el sistema.

Cada usuario en un sistema Linux está asociado con una shell predeterminada, que determina el intérprete de comandos que utilizan al interactuar con el sistema.

Cambiar la shell predeterminada de un usuario puede ser necesario por diversas razones, como preferencia personal o la necesidad de características específicas ofrecidas por una shell diferente.

En este artículo, exploraremos el proceso de cambiar la shell predeterminada de un usuario en Linux. La shell es un programa que acepta e interpreta comandos; existen varias shells de código abierto tales como bash, sh, ksh, zsh, fish, y muchas otras shells menos conocidas disponibles en Linux.

Shell Bash de Linux

Bash (/bin/bash) es una shell popular en la mayoría, si no en todas las distribuciones Linux, y normalmente es la shell predeterminada para las cuentas de usuario.

Existen varias razones para cambiar la shell de un usuario en Linux, incluyendo las siguientes:

  • Para bloquear o desactivar los inicios de sesión de usuario normales en Linux usando un shell nologin.
  • Utilice un script o programa de envoltura de shell para registrar los comandos de usuario antes de que se envíen a un shell para su ejecución. Aquí, especifique la envoltura de shell como el shell de inicio de sesión de un usuario.
  • Para satisfacer las demandas de un usuario (que desea usar un shell específico), especialmente aquellos con derechos administrativos.

Cuando se crean cuentas de usuario con las utilidades useradd o adduser, la bandera --shell se puede usar para especificar el nombre del shell de inicio de sesión de un usuario que no sea el especificado en los archivos de configuración respectivos.

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.

Lista de shells disponibles en un sistema Linux

En Linux, el archivo /etc/shells se utiliza comúnmente para almacenar una lista de shells de inicio de sesión válidos instalados en el sistema. Este archivo ayuda a identificar qué shells están disponibles para que los usuarios los establezcan como su shell predeterminado mediante comandos como chsh.

Para ver la lista de shells disponibles en un sistema Linux, puede usar el siguiente comando:

cat /etc/shells

Salida de ejemplo:

# /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

Antes de continuar, tenga en cuenta que:

  • A user can change their own shell to anything: which, however, must be listed in the /etc/shells file.
  • Solo root puede ejecutar un shell que no esté listado en el archivo /etc/shells.
  • Si una cuenta tiene un shell de inicio de sesión restringido, entonces solo el root puede cambiar el shell de ese usuario.

Encontrar el shell actual en Linux

Antes de cambiar el shell de un usuario predeterminado, es importante determinar el shell actual ejecutando el siguiente comando echo, que muestra el shell actual para el usuario conectado.

echo $SHELL

/bin/bash

La salida muestra que el usuario está actualmente utilizando el shell Bash (/bin/bash).

Cambiar el Shell Predeterminado en Linux

Ahora discutiremos tres formas diferentes de cambiar el shell predeterminado del usuario en Linux.

1. Utilidad usermod

El comando usermod se utiliza para modificar los detalles de la cuenta de un usuario, almacenados en el archivo /etc/passwd y la opción -s o --shell se utiliza para cambiar el shell de inicio de sesión del usuario.

En este ejemplo, primero comprobaremos la información de la cuenta del usuario tecmint para ver su shell de inicio de sesión predeterminado y luego cambiaremos su shell de inicio de sesión de /bin/sh a /bin/bash de la siguiente manera.

grep tecmint /etc/passwd
sudo usermod --shell /bin/bash tecmint
grep tecmint /etc/passwd
Change User Shell using Usermod

Ahora el shell predeterminado para el usuario “tecmint” se cambiará a bash.

2. Utilidad chsh

El comando chsh se utiliza para cambiar el shell de inicio de sesión predeterminado del usuario de forma interactiva utilizando la opción -s o –shell como se muestra.

grep tecmint /etc/passwd
sudo chsh --shell /bin/sh tecmint
grep tecmint /etc/passwd
Change User Shell Using chsh

Reemplace “/bin/sh” con la ruta real del shell que desea establecer. Por ejemplo, para establecer el shell como sh, usaría “/bin/sh“.

Es importante tener en cuenta que los cambios en el shell predeterminado generalmente surten efecto en su próximo inicio de sesión.

Los dos métodos anteriores modifican todos el shell especificado en el archivo /etc/passwd, que puede editar manualmente como en el tercer método a continuación.

3. Cambiar el Shell de Usuario en el Archivo /etc/passwd

En este método, simplemente abra el archivo /etc/passwd usando cualquiera de sus editores de texto de línea de comandos favoritos y cambie el shell de un usuario específico.

sudo vi /etc/passwd
OR
sudo nano /etc/passwd
Change User Shell in Passwd File

Localice la línea correspondiente al usuario para quien desea cambiar el shell predeterminado. Por ejemplo, si la línea se ve así:

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

El último campo, /bin/bash, representa el shell predeterminado (en este caso, Bash).

Para cambiar el valor del campo del shell al shell deseado, simplemente especifique la ruta a un shell (/bin/zsh) como se muestra.

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

Cuando haya terminado de editar, guarde y cierre el archivo.

¿Cómo instalar otro shell?

Similar a otros paquetes de software, los shells populares como Zsh y Fish pueden instalarse fácilmente desde el repositorio de su distribución como se muestra.

Instalar el Shell Zsh en Linux

Para instalar Zsh en Linux, use el siguiente comando apropiado para su distribución de Linux específica.

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]    

Instalar Fish Shell en Linux

Para instalar Zsh en Linux, utiliza el siguiente comando apropiado para tu distribución específica de Linux.

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]    

No olvides leer estos temas relacionados:

En este artículo, describimos varias formas de cambiar el shell de un usuario en Linux. Para compartir cualquier pensamiento con nosotros, utiliza la sección de comentarios a continuación.

Source:
https://www.tecmint.com/change-a-users-default-shell-in-linux/