GNU/Linux >> Linux Esercitazione >  >> Linux

Quali sono i contenuti di /bin/bash e cosa devo fare se li ho accidentalmente sovrascritti

Non spegnere la tua macchina.

Hai ancora una shell funzionante? È bash? Se è così, stai bene. (Ma non farlo di nuovo.)

Esegui:

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

Voilà, va tutto bene.

Poiché qualcuno nei commenti dubita che funzioni:

[[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 è una shell, probabilmente la tua shell di sistema, quindi ora accadono cose strane, mentre parti della shell sono ancora in memoria. Dopo esserti disconnesso o riavviato, ti ritroverai in guai peggiori.

Quindi la prima cosa dovrebbe essere cambiare la tua shell in qualcosa di sicuro. Guarda quali shell hai installato

cat /etc/shells

Quindi cambia la tua shell con una delle altre shell elencate qui, per esempio

chsh -s /bin/dash

Aggiorna, perché hai già riavviato:

Sei fortunato che al giorno d'oggi il processo di avvio non si basi su bash , quindi il tuo sistema si avvia, non puoi semplicemente ottenere una riga di comando. Ma puoi avviare un editor per modificare /etc/passwd e cambia la shell nel root linea da /bin/bash a /bin/dash . Esci e accedi di nuovo. Basta non apportare nessun'altra modifica a quel file, o potresti rovinare completamente il tuo sistema.

Quindi prova a reinstallare bash con

apt-get --reinstall install bash

Se tutto è andato a buon fine puoi chsh torna a bash .

Infine:penso che kali sia una distribuzione altamente specializzata, probabilmente non adatta a persone che sovrascrivono accidentalmente la loro shell. Poiché questa frase è stata definita maleducata e dura, dovrei aggiungere che l'ho scritta sulla base della mia esperienza. Quando ero più giovane, ho rovinato il mio sistema perché nessuno mi ha detto di evitare di scherzare come root.


Se puoi accedere, ma non puoi aprire un terminale o altrimenti accedere a una shell, ma puoi accedere ai file tramite la GUI, vai a /bin , cerca i file i cui nomi terminano con sh (ma non .sh ) ed eseguirne uno (facendo doppio clic o facendo clic con il pulsante destro del mouse). In particolare, cerca quanto segue:

  • sh
  • dash
  • ash
  • ksh (o ksh seguito da un numero; ad esempio, ksh93 )
  • zsh
  • yash

o, come ultima risorsa,

  • tcsh o
  • csh

Se riesci a far funzionare una shell, prova la risposta di Philippos.

Un altro approccio è avviare in modalità utente singolo seguendo queste istruzioni, ma specificando init=/bin/sh (o una delle altre shell) invece di init=/bin/bash .


Linux
  1. In che modo Linux gestisce più separatori di percorsi consecutivi (/home////nomeutente///file)?

  2. Bash =~ Regex e HTTPS://regex101.com/?

  3. Qual è la differenza tra /sbin/nologin e /bin/false?

  4. Perché /bin/sh punta a /bin/dash e non a /bin/bash??

  5. Cosa sono i file /dev/zero e /dev/null in Linux

Linux – Unire /usr/bin e /usr/sbin in /bin (gnu/linux)?

Cosa c'è di diverso tra /bin/false e /sbin/nologin come shell dell'utente nologin

Installa i binari in /bin, /sbin, /usr/bin e /usr/sbin, interazioni con --prefix e DESTDIR

Qual è la differenza tra #!/usr/bin/env bash e #!/usr/bin/bash?

Quando dovrei usare /dev/shm/ e quando dovrei usare /tmp/?

Qual è la differenza tra /tmp e /run?