/ Bin / bash öğesinin içeriği nedir ve yanlışlıkla üzerine yazsam, ne yapmalıyım?


24

Yanlışlıkla / bin / bash dosyasını / bin klasörünün içine koymak niyetinde olduğum aptal bir betiğin üzerine yazdım.

Bu dosyanın içeriğini nasıl geri alabilirim? İçeriği web’de bulabilmemin ve tekrar kopyalamamın bir yolu var mı? Buradaki seçeneklerim neler, terminalin "Çok Fazla Sembolik Bağlantı mı?"

Hala bu tür şeylere yeniyim ve alabildiğim tüm yardımları için teşekkür ediyorum.

Düzenleme: Ben bazı ek özelliklere sahip oldukça fazla debian Kali 2.2 Rolling, olduğumu söylemeyi unuttum.

Düzen 2: Birkaç gün öncesine kadar hatamı anlamadığım için makineyi de yeniden başlattım. Bu biraz daha zorlaştırıyor.


9
Silinmiş bash? Sadece zsh :-) kullanın </troll>
Kevin


fiziksel mi yoksa VM mi?
Ben Aveling

9
Bir dahaki sefere: sistem dizinlerine bir şeyler koymayın . Özel komut dosyaları ve benzeri şeyler istiyorsanız, kendinize bir a $HOME/.binekleyin ve kendinize ekleyin PATHveya /usr/local/binsistem genelinde olması gerekiyorsa kullanın . Veya daha da iyisi, bir paket oluşturmak.
spektrumlar

Yanıtlar:


33

bashbir kabuktur, muhtemelen sistem kabuğunuzdur, bu yüzden şimdi kabuğun bazı kısımları hala bellekte iken garip şeyler olur. Oturumu kapattığınızda veya yeniden başlattığınızda, başınız daha derde girecek.

Bu yüzden ilk şey kabuğunuzu güvenli bir şeyle değiştirmelisiniz. Hangi mermileri yüklediğinizi görün

cat /etc/shells

Ardından kabuğunuzu orada listelenen diğer mermilerden birine çevirin, örneğin

chsh -s /bin/dash

Güncelle, çünkü zaten yeniden başlattınız:

Günümüzde önyükleme işleminin güvenmediği için şanslısınız bash, bu nedenle sisteminiz önyükleme yapıyor, yalnızca bir komut satırı alamıyorsunuz. Ama düzenlemek için bir editör başlayabilir /etc/passwdve kabuk değiştirmeye rootgelen hat /bin/bashiçin /bin/dash. Çıkış yapın ve tekrar giriş yapın. Sadece bu dosyada herhangi bir değişiklik yapmayın, yoksa sisteminizi tamamen bozabilir.

Sonra yeniden deneyin bashile

apt-get --reinstall install bash

Her şey başardıysa chshgeri dönebilirsin bash.

Sonunda: Bence kali çok özel bir dağıtım, kabuğunun üzerine yanlışlıkla yazan insanlar için uygun değil. Bu cümleye kaba ve sert denildiği için, kendi tecrübelerime dayanarak yazdığımı da eklemeliyim. Küçükken sistemimi mahvettim, çünkü kimse bana etrafta dolaşmaktan kaçınmamı söylemedi.


3
@ dr01: Bash kaçışının nasıl çalıştığı göz önüne alındığında, yanlış yerleştirilmiş bir teklif meselesi olabilir. command > /bin/bash ...Karşı düşün command > (/bin/bash ...).
MSalters

7
Bu son cümle sert ... :)
James Reinstate Monica Polk

6
@ MSalters Yanlış yerleştirilmiş bir alıntı root olarak çalıştırılır . Bu iki hata. İkincisi, elbette, ayrıcalıklı olmayan bir kullanıcı olarak değil, karmaşık boru hatlarınızı kök olarak denemek.
derobert

12
@JamesKPolk hayır, hiç de zor değil. Bu basit bir gerçek. Kali uzmanlar tarafından kullanılmak üzere tasarlanmış profesyonel bir araçtır . Hatta web sayfalarında olduğu kadar çok şey ifade ediyorlar. Eğer uzman değilseniz, Kali'de çalışan hiçbir işiniz yoktur.
terdon

3
Son cümle sert değil . Sade gerçek bu.
Andrea Lazzarotto

65

Makinenizi kapatmayın.

Hala çalışan bir kabuğunuz var mı? Bu bash mı? Eğer öyleyse, iyisin. (Ama bunu bir daha yapma.)

Koşmak:

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

Voila, her şey yolunda.


Yorumlarda biri bu işe yaradığından şüpheli çünkü:

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

18
Her durumda, bundan sonra, bash'ı dağıtımınızdan yeniden yüklemeniz önerilir, örneğin doğru izinler için (bazı rootkit avcıları buradaki değişikliklerden şaşırmış olabilir), ayrıca sabit bağlantı veya sembolik bağlantıyı da (örneğin /bin/shveya rbash) geri yüklemek için
Giacomo Catenazzi

4
@GiacomoCatenazzi, aslında, bu yöntem izinleri korur - rootçalıştırıldığında varsayılandır cp. Sert linkler olsa iyi bir nokta.
Joker

1
Makine yeniden başlatıldı. Normal bir kabuğu açamıyorum, ancak içeriği GUI ile düzenleyebilirim. Daha önce de söylediğim gibi, "Alt işlem / bin / bash. (Çok fazla sembolik bağ düzeyi var)" yazıldığını bildiren bir hata alıyorum.
GarrukApex

5

Oturum açabiliyorsanız, ancak bir terminal açamıyor veya başka bir kabuğa erişemiyorsanız, ancak GUI aracılığıyla dosyalara erişebilir, adına gidin /bin, adları biten sh(ancak değil .sh) ile biten dosyaları arayabilir ve birini çalıştırabilirsiniz (çift tıklatarak). veya sağ tıklatarak). Özellikle, aşağıdakileri arayın:

  • sh
  • dash
  • ash
  • ksh (veya kshardından bir sayı; örn.  ksh93)
  • zsh
  • yash

veya son çare olarak,

  • tcsh veya
  • csh

Çalışan bir kabuk elde edersen Philippos'un cevabını dene .

Diğer bir yaklaşım, bu talimatları izleyerek tek kullanıcılı modda önyükleme yapmak init=/bin/shyerine, yerine (veya diğer kabuklardan birini) belirtmektir init=/bin/bash.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.