GNU/Linux >> Tutoriels Linux >  >> Linux

Quel est le contenu de /bin/bash, et que dois-je faire si je les écrase accidentellement

N'éteignez pas votre ordinateur.

Avez-vous toujours un shell en cours d'exécution ? Est-ce que c'est bas ? Si oui, tout va bien. (Mais ne recommencez pas.)

Exécuter :

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

Voilà, tout va bien.

Puisque quelqu'un dans les commentaires doute que cela fonctionne :

[[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 est un shell, probablement votre shell système, alors maintenant des choses étranges se produisent, alors que des parties du shell sont toujours en mémoire. Une fois déconnecté ou redémarré, vous aurez de plus gros problèmes.

Donc, la première chose à faire devrait être de changer votre shell pour quelque chose de sûr. Voir quels shells vous avez installés

cat /etc/shells

Ensuite, changez votre shell pour l'un des autres shells répertoriés ici, par exemple

chsh -s /bin/dash

Mettez à jour, car vous avez déjà redémarré :

Vous avez de la chance qu'aujourd'hui le processus de démarrage ne repose pas sur bash , pour que votre système démarre, vous ne pouvez tout simplement pas obtenir de ligne de commande. Mais vous pouvez démarrer un éditeur pour modifier /etc/passwd et changer le shell dans le root ligne de /bin/bash à /bin/dash . Déconnectez-vous et reconnectez-vous. N'apportez simplement aucune autre modification à ce fichier, ou vous risquez de gâcher complètement votre système.

Essayez ensuite de réinstaller bash avec

apt-get --reinstall install bash

Si tout a réussi, vous pouvez chsh retour à bash .

Enfin :je pense que kali est une distribution hautement spécialisée, probablement pas adaptée aux personnes qui écrasent accidentellement leur shell. Comme cette phrase a été qualifiée de grossière et dure, je dois ajouter que je l'ai écrite à partir de ma propre expérience. Quand j'étais plus jeune, j'ai ruiné mon système parce que personne ne m'a dit d'éviter de déconner en tant que root.


Si vous pouvez vous connecter, mais que vous ne pouvez pas ouvrir un terminal ou accéder à un shell, mais que vous pouvez accéder aux fichiers via l'interface graphique, accédez à /bin ,recherchez les fichiers dont le nom se termine par sh (mais pas .sh ) et exécutez-en un (en double-cliquant ou en cliquant avec le bouton droit). En particulier, recherchez les éléments suivants :

  • sh
  • dash
  • ash
  • ksh (ou ksh suivi d'un nombre ; par exemple, ksh93 )
  • zsh
  • yash

ou, en dernier recours,

  • tcsh ou
  • csh

Si vous pouvez faire fonctionner un shell, essayez la réponse de Philippos.

Une autre approche consiste à démarrer en mode mono-utilisateur en suivant ces instructions mais en spécifiant init=/bin/sh (ou l'un des autres shells) au lieu de init=/bin/bash .


Linux
  1. Comment Linux gère-t-il plusieurs séparateurs de chemins consécutifs (/home////nom d'utilisateur///fichier) ?

  2. Quelle est la différence entre /sbin/nologin et /bin/false ?

  3. Aucune raison d'avoir un Shebang pointant vers /bin/sh plutôt que /bin/bash ?

  4. Linux – Fusionner /usr/bin et /usr/sbin dans /bin (gnu/linux) ?

  5. Quelle est la différence entre /bin/false et /sbin/nologin en tant que shell de l'utilisateur nologin

Pourquoi /bin/sh pointe-t-il vers /bin/dash et non /bin/bash ? ?

Que sont les fichiers /dev/zero et /dev/null sous Linux

Quand dois-je utiliser /dev/shm/ et quand dois-je utiliser /tmp/?

Quelle est la signification de /usr/sbin, /usr/local/sbin et /usr/local/bin ?

Différence entre /bin et /usr/bin

Déplacement du contenu de /bin vers /usr/bin, possible d'annuler ?