febrero 27, 2022

Cambiar el Shell predeterminado en Linux

Vista general

Un shell interactivo lee comandos de la entrada del usuario en un terminal tty. Llamamos al shell interactivo después de un inicio de sesión exitoso al shell predeterminado o shell de inicio de sesión.

En este tutorial, vamos a discutir cómo cambiar el shell predeterminado de un usuario.

Introducción al comando chsh

El comando chsh se incluye con el paquete util-linux, un paquete estándar que está disponible en todas las distribuciones de Linux.

Usando el comando chsh con la opción-l, podemos listar los shells instalados en el sistema actual:

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

Un uso más común del comando chsh es cambiar el shell predeterminado de un usuario.

Veremos cómo hacerlo en secciones posteriores.

¿Qué Shell Estoy Usando Actualmente?

Después de un inicio de sesión exitoso, estaremos con nuestro shell predeterminado.

Antes de hablar de cambiar el shell predeterminado, primero aprendamos un par de maneras de averiguar qué shell estamos usando actualmente.

Una forma es leer el entorno del sistema SHELL SHELL, que almacena el comando shell en ejecución:

kent$ echo $SHELL/bin/zsh

Como se muestra en el ejemplo anterior, el shell en ejecución de mi usuario de inicio de sesión actual es Zsh.

Alternativamente, podemos conocer el shell actual explorando su información de proceso. Linux almacena el PID del shell en ejecución en la variable especial$$:

kent$ echo $3492

En el ejemplo anterior, el proceso con PID 153492 sería el proceso de shell actual. Podemos obtener información detallada sobre el proceso usando el comando ps con la opción-p:

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

La salida nos dice que Zsh es nuestro shell actual.

Cambiar el Shell Predeterminado del Usuario actual

Si queremos cambiar el shell predeterminado del usuario de inicio de sesión actual, podemos ejecutar el comando chsh con la opción-s<NEW_SHELL >.

Cambiemos el shell predeterminado del usuario actual a Bash:

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

Vale la pena mencionar que después de cambiar con éxito el shell predeterminado, el shell en ejecución no se cambiará. Por ejemplo, hemos establecido Bash como el shell predeterminado del usuario kent, pero el shell actual sigue siendo Zsh:

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

El shell predeterminado recién cambiado entrará en vigor la próxima vez que iniciemos sesión con el usuario kent.

El comando de shell predeterminado es esencial para el inicio de sesión de los usuarios. Si el comando no es válido, tendremos problemas para iniciar sesión con el usuario.

Por lo tanto, como estamos cambiando el shell predeterminado, el comando chsh verificará si el comando shell dado es válido.

Veamos qué pasará si pasamos una ruta de acceso no válida al comando chsh:

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

Hemos aprendido que el comando chsh puede listar los shells actualmente instalados en el sistema.

El comando chsh se negará a cambiar el shell predeterminado si el shell dado no está en la lista de shell válidos del sistema:

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.

En el ejemplo anterior, intentamos establecer el comando/usr / bin / cat como el shell predeterminado del usuario kent.

La ruta del comando cat es válida. Sin embargo, no está en la lista de shell. Por lo tanto, chsh abortó con el mensaje de error y la sugerencia correspondientes.

Cambiar el Shell predeterminado de Otros Usuarios

Hasta ahora, hemos aprendido a usar el comando chsh para cambiar el shell predeterminado del usuario de inicio de sesión actual.

También podemos cambiar el shell predeterminado de otros usuarios usando el comando chsh, pero necesitamos el permiso de root para hacerlo.

La sintaxis es bastante sencilla:

root# chsh -s NEW_SHELL USERNAME

Esta vez, nos logueamos como usuario root y cambiar el shell por defecto del usuario kent /bin/sh:

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

Ahora, vamos a iniciar sesión de nuevo con el usuario kent y comprobar si el shell por defecto se ha cambiado correctamente:

sh-5.1$ echo $SHELL/bin/sh

Como se muestra en la salida anterior, el shell predeterminado del usuario kent es ahora / bin / sh.

Editando el archivo /etc/passwd

Hemos aprendido a usar el comando chsh para cambiar el shell predeterminado de un usuario. Alternativamente, también podemos hacerlo editando el archivo/etc / passwd.

En Linux, el archivo/etc / passwd es un archivo de texto sin formato. Almacena la información de la cuenta de usuario, que se requiere durante el inicio de sesión del usuario:

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

Si echamos un vistazo a sus indicadores de permisos, veremos que todos los usuarios pueden leerlo, pero solo el usuario root puede escribir en /etc/passwd.

Comprobemos el contenido en el archivo/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...

Cada línea del archivo registra la información de la cuenta de un usuario. Los campos de un registro están separados por dos puntos.

Un registro contiene los datos de la cuenta del usuario, como nombre de usuario, UID, GID y directorio personal, entre otros. El último campo indica el shell predeterminado del usuario.

Si cambiamos el campo de shell predeterminado en el archivo/etc / passwd, tendrá efecto la próxima vez que el usuario inicie sesión en el sistema.

Una ventaja de editar el archivo/etc / passwd es que podemos cambiar el shell predeterminado de varios usuarios de una sola vez. A veces, esto podría ser bastante conveniente.

Sin embargo, debemos tener en cuenta que cuando guardamos el archivo /etc/passwd, no se realizará ninguna validación o verificación en los shells predeterminados modificados.

Por lo tanto, debemos asegurarnos de que hemos dado rutas de comandos de shell válidas. De lo contrario, el usuario tendrá problemas para iniciar sesión en el sistema la próxima vez.

Conclusión

En este artículo rápido, hemos aprendido cómo cambiar el shell predeterminado de un usuario a través de ejemplos.

El comando chsh es bastante sencillo para la tarea. Además, puede verificar si el shell dado es válido en el sistema.

Si queremos cambiar el shell predeterminado de un usuario que no sea el de inicio de sesión actual, necesitamos ejecutar el comando chsh con permiso de usuario root.

Además, si podemos iniciar sesión como usuario root, también podemos cambiar el shell predeterminado de varios usuarios editando directamente el archivo/etc / passwd.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.