GNU/Linux >> Belajar Linux >  >> Linux

Apa isi /bin/bash, dan apa yang harus saya lakukan jika saya tidak sengaja menimpanya

Jangan matikan mesin Anda.

Apakah Anda masih memiliki shell berjalan? Apakah itu pesta? Jika demikian, Anda baik-baik saja. (Tapi jangan lakukan ini lagi.)

Jalankan:

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

Voila, semuanya baik-baik saja.

Karena seseorang di komentar meragukan apakah ini berhasil:

[[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 adalah shell, mungkin shell sistem Anda, jadi sekarang hal-hal aneh terjadi, sementara bagian dari shell masih ada di memori. Setelah Anda keluar atau memulai ulang, Anda akan berada dalam masalah yang lebih dalam.

Jadi hal pertama yang harus dilakukan adalah mengubah shell Anda menjadi sesuatu yang aman. Lihat shell apa yang telah Anda instal

cat /etc/shells

Kemudian ubah shell Anda ke salah satu shell lain yang tercantum di sana, misalnya

chsh -s /bin/dash

Perbarui, karena Anda telah memulai ulang:

Anda beruntung karena saat ini proses boot tidak bergantung pada bash , jadi sistem Anda boot, Anda tidak bisa mendapatkan baris perintah. Tetapi Anda dapat memulai editor untuk mengedit /etc/passwd dan ubah shell di root baris dari /bin/bash ke /bin/dash . Keluar dan masuk lagi. Jangan lakukan perubahan lain pada file itu, atau Anda dapat mengacaukan sistem Anda sepenuhnya.

Kemudian coba instal ulang bash dengan

apt-get --reinstall install bash

Jika semuanya berhasil, Anda dapat chsh kembali ke bash .

Terakhir:menurut saya, kali adalah distribusi yang sangat terspesialisasi, mungkin tidak cocok untuk orang yang secara tidak sengaja menimpa cangkangnya. Karena kalimat ini disebut kasar dan kasar, saya harus menambahkan bahwa saya menulisnya berdasarkan pengalaman saya sendiri. Ketika saya masih muda, saya merusak sistem saya karena tidak ada yang mengatakan kepada saya untuk menghindari main-main sebagai root.


Jika Anda dapat masuk, tetapi Anda tidak dapat membuka terminal atau mengakses shell, tetapi Anda dapat mengakses file melalui GUI, buka /bin , cari file yang namanya diakhiri dengan sh (namun bukan .sh ) dan jalankan satu (dengan mengklik dua kali atau mengklik kanan). Secara khusus, cari yang berikut ini:

  • sh
  • dash
  • ash
  • ksh (atau ksh diikuti dengan nomor; mis., ksh93 )
  • zsh
  • yash

atau, sebagai upaya terakhir,

  • tcsh atau
  • csh

Jika Anda dapat menjalankan shell, cobalah jawaban Philippos.

Pendekatan lain adalah mem-boot ke mode pengguna tunggal dengan mengikuti petunjuk ini, tetapi tetapkan init=/bin/sh (atau salah satu cangkang lainnya) bukan init=/bin/bash .


Linux
  1. Apa Perbedaan Antara /sbin/nologin Dan /bin/false?

  2. Apa itu Pemisah Kata Readline?

  3. Ny Alasan Untuk Memiliki Shebang Menunjuk /bin/sh Daripada /bin/bash?

  1. Mengapa /bin/sh Menunjuk Ke /bin/dash Dan Bukan /bin/bash??

  2. Apa perbedaan antara /bin/false dan /sbin/nologin sebagai shell pengguna nologin?

  3. Apa itu file /dev/zero dan /dev/null di Linux?

  1. Instal binari ke /bin, /sbin, /usr/bin dan /usr/sbin, interaksi dengan --prefix dan DESTDIR

  2. Ukuran apa yang harus Anda alokasikan ke /, /boot, /home dan swap

  3. Apa arti dari /usr/sbin, /usr/local/sbin dan /usr/local/bin?