
lo instalépezpez(un shell de línea de comandos interactivo fácil de usar) en un servidor Linux, luego alguien lo desinstaló pero no lo sé. Después de ejecutar chsh -s /usr/local/bin/fish
sin precaución, no puedo iniciar sesión en el servidor ahora. Apareció el mensaje de error "iniciar sesión: sin shell: no existe tal archivo o directorio" que aparentemente dice que los mariscos ya no existen.
El servidor proporciona solo una interfaz CLI, entonces, ¿cómo puedo cambiar el shell de inicio de sesión cuando ni siquiera puedo iniciar sesión?
Respuesta1
Si tiene acceso a la cuenta raíz, puede cambiar el shell de un usuario desde allí usando chsh -u user -s $SHELL
.
Si tiene acceso al proceso de arranque, puede agregarlo init=$SHELL
para que lo coloquen en un shell de un solo usuario, donde puede arreglar esto, nuevamente con chsh -u user -s $SHELL
(algunos sistemas que usan un arranque de dos etapas con una imagen initrd pueden requerir que use real_init
en su lugar) . Probablemente necesitará volver a montar el sistema de archivos que lo contiene /etc/passwd
como lectura-escritura (usando mount -o remount,rw /
o similar).
De lo contrario, si puede su
ingresar al usuario desde otro usuario, intente su user -c $SHELL
, o si puede ingresar al usuario mediante ssh, puede intentar algo como ssh user@localhost $SHELL
.
También puede iniciar en un CD/USB en vivo, montarlo /
y repararlo /etc/passwd
manualmente.
Respuesta2
Tengo el mismo problema, esta solución me funciona:
- Arrancar con un cd en vivo (yo uso debían 7.6) en modo en vivo
- En la terminal en vivo, obtenga acceso de root ejecutando el comando:
passwd root
- Monte el disco de la partición de su distribución bloqueada.
- Vaya a este disco y ejecute este comando:
cat etc/shells
- Con
nano etc/passwd
eliminar las referencias de peces y poner un nombre de consola válido del punto 4. - Reinicia y disfruta.
Respuesta3
Al intentar iniciar sesión recibí este mensaje: No se puede ejecutar /sbin/nologin: no existe tal archivo o directorio
Esto es lo que hice y funcionó para mí.
- Inicié sesión en el sistema con otra cuenta con privilegios de superusuario.
- Ingrese el siguiente comando:
sudo chsh -u usuario -s $SHELL
donde usuario es el nombre de la cuenta con el problema
- Cerrar sesión del sistema
- Inicie sesión con el nombre de la cuenta que tuvo un problema.
Respuesta4
También estaba enfrentando el mismo problema en Elementary OS Loki. Para resolver el problema realicé lo siguiente
- En primer lugar, elimino todo lo relacionado con zsh.sudo apt-get eliminar zsh && apt-get autoremove
- después de eso edité el/etc/contraseñay descubrí que el shell del usuario root no está definido, así que edité shell /bin/bash y todo esto me ayudó a resolver el problema.