GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cuáles son los contenidos de /bin/bash y qué hago si los sobrescribí accidentalmente?

No apagues tu máquina.

¿Todavía tienes un shell en ejecución? ¿Es bash? Si es así, estás bien. (Pero no vuelvas a hacer esto).

Ejecutar:

sudo cp /proc/$$/exe /bin/bash

Voila, todo está bien.

Ya que alguien en los comentarios duda que esto funcione:

[[email protected] ~]$ cat /etc/shells 
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
[[email protected] ~]$ grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[[email protected] ~]$ echo $0
-bash
[[email protected] ~]$ sudo rm /bin/bash
[[email protected] ~]$ bash
-bash: /bin/bash: No such file or directory
[[email protected] ~]$ sudo su -
su: /bin/bash: No such file or directory
[[email protected] ~]$ sudo cp /proc/$$/exe /bin/bash
[[email protected] ~]$ bash
[[email protected] ~]$ exit
[[email protected] ~]$ sudo su -
[[email protected] ~]# logout
[[email protected] ~]$ 

bash es un shell, probablemente el shell de su sistema, por lo que ahora suceden cosas extrañas, mientras que partes del shell todavía están en la memoria. Una vez que cierre la sesión o reinicie, tendrá más problemas.

Entonces, lo primero debería ser cambiar su caparazón a algo seguro. Vea qué shells ha instalado

cat /etc/shells

Luego cambie su caparazón a uno de los otros caparazones enumerados allí, por ejemplo

chsh -s /bin/dash

Actualizar, porque ya reiniciaste:

Tienes suerte de que hoy en día el proceso de arranque no dependa de bash , por lo que su sistema se inicia, simplemente no puede obtener una línea de comando. Pero puedes iniciar un editor para editar /etc/passwd y cambie el shell en el root línea desde /bin/bash a /bin/dash . Cerrar sesión y volver a iniciar sesión. Simplemente no haga ningún otro cambio en ese archivo, o puede estropear su sistema por completo.

Luego intente reinstalar bash con

apt-get --reinstall install bash

Si todo salió bien, puedes chsh volver a bash .

Finalmente:creo que kali es una distribución altamente especializada, probablemente no adecuada para personas que sobrescriben accidentalmente su caparazón. Como esta oración fue llamada grosera y dura, debo agregar que la escribí a partir de mi propia experiencia. Cuando era más joven, arruiné mi sistema porque nadie me dijo que evitara jugar como root.


Si puede iniciar sesión, pero no puede abrir una terminal o acceder a un shell, pero puede acceder a los archivos a través de la GUI, vaya a /bin , busque archivos cuyos nombres terminen con sh (pero no .sh ) y ejecute uno (haciendo doble clic o clic derecho). En particular, busque lo siguiente:

  • sh
  • dash
  • ash
  • ksh (o ksh seguido de un número; por ejemplo, ksh93 )
  • zsh
  • yash

o, como último recurso,

  • tcsh o
  • csh

Si puede ejecutar un shell, intente con la respuesta de Philippos.

Otro enfoque es iniciar en modo de usuario único siguiendo estas instrucciones pero especificando init=/bin/sh (o uno de los otros shells) en lugar de init=/bin/bash .


Linux
  1. ¿Qué son los separadores de palabras de Readline?

  2. ¿Alguna razón para tener un Shebang apuntando a /bin/sh en lugar de /bin/bash?

  3. ¿Por qué /bin/sh apunta a /bin/dash y no a /bin/bash?

  4. ¿Qué es diferente entre /bin/false y /sbin/nologin como shell del usuario nologin?

  5. ¿Cuáles son los significados de /usr/sbin, /usr/local/sbin y /usr/local/bin?

¿Cuál es la diferencia entre #!/usr/bin/env bash y #!/usr/bin/bash?

¿Cuándo debo usar /dev/shm/ y cuándo debo usar /tmp/?

¿Qué tamaños debe asignar a /, /boot, /home y swap?

¿Cuál es la diferencia entre /tmp y /run?

Se movió el contenido de /bin a /usr/bin, ¿es posible deshacerlo?

#!/bin/sh vs #!/bin/bash para máxima portabilidad