เนื้อหาของ / bin / bash คืออะไรและฉันต้องทำอย่างไรหากฉันเขียนทับมันโดยไม่ตั้งใจ


24

ฉันเขียนทับไฟล์ / bin / bash โดยไม่ตั้งใจด้วยสคริปต์ใบ้ที่ฉันตั้งใจจะใส่ไว้ในโฟลเดอร์ / bin

ฉันจะรับเนื้อหาของไฟล์นั้นกลับมาได้อย่างไร มีวิธีที่ฉันสามารถค้นหาเนื้อหาบนเว็บและเพียงแค่คัดลอกพวกเขากลับมา? ตัวเลือกของฉันคืออะไรที่นี่เนื่องจากเทอร์มินัลนั้นมีข้อผิดพลาดในการพูดถึง

ฉันยังคงเป็นผู้เล่นหน้าใหม่ของสิ่งนี้และฉันขอขอบคุณทุกความช่วยเหลือที่ฉันสามารถได้รับ

แก้ไข: ฉันลืมที่จะพูดถึงฉันใน Kali 2.2 Rolling ซึ่งค่อนข้างเดเบียนด้วยคุณสมบัติเพิ่มเติมบางอย่าง

แก้ไข 2: ฉันยังรีสตาร์ทเครื่องเนื่องจากฉันไม่ได้ตระหนักถึงความผิดพลาดของฉันจนกระทั่งสองสามวันที่ผ่านมา นั่นทำให้ยากขึ้นอีกหน่อย


9
ลบ bash หรือไม่ เพียงใช้ zsh :-) </troll>
เควิน

1
serverfault.com/questions/451528/…และอื่น ๆ อีกมากมาย
skandigraun

ทางกายภาพหรือ VM
Ben Aveling

9
สำหรับครั้งต่อไป: ไม่ใส่สิ่งที่อยู่ในไดเรกทอรีระบบ หากคุณต้องการสคริปต์และสิ่งของที่กำหนดเองคุณสามารถสร้างมันเอง$HOME/.binและเพิ่มลงในของคุณPATHหรือใช้/usr/local/binถ้าคุณต้องการให้เป็นระบบ หรือสร้างแพคเกจให้ดียิ่งขึ้นไปอีก
สเปกตรัม

คำตอบ:


33

bashเป็นเปลือกอาจเปลือกระบบของคุณดังนั้นตอนนี้สิ่งแปลก ๆ เกิดขึ้นในขณะที่บางส่วนของเปลือกยังอยู่ในหน่วยความจำ เมื่อคุณออกจากระบบหรือเริ่มระบบใหม่คุณจะประสบปัญหามากขึ้น

ดังนั้นสิ่งแรกควรเปลี่ยนเปลือกของคุณให้ปลอดภัย ดูว่าคุณติดตั้งเชลล์อะไรบ้าง

cat /etc/shells

จากนั้นเปลี่ยนเชลล์เป็นเชลล์อื่นที่อยู่ในรายการ

chsh -s /bin/dash

อัปเดตเนื่องจากคุณรีบูตแล้ว:

คุณโชคดีที่ทุกวันนี้กระบวนการบู๊ตไม่ได้พึ่งพาbashดังนั้นการบูทระบบของคุณคุณก็ไม่สามารถรับบรรทัดคำสั่งได้ แต่คุณสามารถเริ่มต้นการแก้ไขการแก้ไข/etc/passwdและเปลี่ยนเปลือกในrootบรรทัดจากไป/bin/bash /bin/dashออกจากระบบและลงชื่อเข้าใช้อีกครั้ง อย่าเพิ่งทำการเปลี่ยนแปลงอื่นใดในไฟล์นั้นมิฉะนั้นคุณอาจทำให้ระบบของคุณสมบูรณ์

จากนั้นลองติดตั้งใหม่bashด้วย

apt-get --reinstall install bash

หากทุกอย่างประสบความสำเร็จคุณสามารถกลับไปchshbash

ในที่สุด: ฉันคิดว่ากาลีเป็นการกระจายตัวที่มีความเชี่ยวชาญสูงซึ่งอาจไม่เหมาะสำหรับผู้ที่เขียนทับเปลือกหอยของพวกเขาโดยไม่ตั้งใจ เนื่องจากประโยคนี้เรียกว่าหยาบคายและรุนแรงฉันควรเพิ่มว่าฉันเขียนมันออกมาจากประสบการณ์ของฉันเอง เมื่อฉันยังเด็กฉันทำลายระบบของฉันเพราะไม่มีใครบอกให้ฉันหลีกเลี่ยงการยุ่งเหยิงเพราะราก


3
@ dr01: เมื่อพิจารณาว่า bash escaping ทำงานอย่างไรมันอาจเป็นเรื่องของคำพูดที่ใส่ผิดที่ คิดว่าเมื่อเทียบกับcommand > /bin/bash ... command > (/bin/bash ...)
MSalters

7
ประโยคสุดท้ายนั้นช่างโหดร้าย ... :)
James Reinstate Monica Polk

6
@MSalters คำพูดที่ใส่ผิดที่รันเป็นรูท นั่นเป็นข้อผิดพลาดสองข้อ แน่นอนประการที่สองคือการลองใช้ท่อที่ซับซ้อนของคุณในฐานะรูทไม่ใช่ผู้ใช้ที่ไม่มีสิทธิพิเศษ
Derobert

12
@JamesKPolk ไม่มันไม่ได้เลวร้ายอะไรเลย มันเป็นความจริงที่เรียบง่าย กาลีเป็นเครื่องมือมืออาชีพที่ออกแบบมาเพื่อนำมาใช้โดยผู้เชี่ยวชาญ พวกเขายังระบุมากบนหน้าเว็บของพวกเขา หากคุณไม่ใช่ผู้เชี่ยวชาญคุณไม่มีธุรกิจที่ทำธุรกิจกาลี
terdon

3
ประโยคสุดท้ายไม่รุนแรง มันเป็นความจริงธรรมดา
Andrea Lazzarotto

65

อย่าปิดเครื่องของคุณ

คุณยังมีเชลล์ที่ใช้งานอยู่หรือไม่? มันทุบตีหรือไม่ ถ้าใช่คุณก็สบายดี (แต่อย่าทำเช่นนี้อีก)

วิ่ง:

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

Voila ทุกอย่างดี


เนื่องจากมีคนในความคิดเห็นสงสัยว่างานนี้:

[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
ไม่ว่าในกรณีใดก็ตามหลังจากนี้ขอแนะนำให้ติดตั้ง bash ใหม่จากการแจกจ่ายของคุณเช่นสำหรับการอนุญาตที่ถูกต้อง (นักล่า rootkit บางคนอาจประหลาดใจกับการเปลี่ยนแปลงที่นั่น) รวมถึงการคืนค่าฮาร์ดลิงก์หรือ symlink (เช่น/bin/shหรือrbash)
Giacomo Catenazzi

4
@GiacomoCatenazzi จริงวิธีนี้รักษาสิทธิ์ที่เริ่มต้นเมื่อวิ่งroot cpลิงค์ยากเป็นจุดที่ดีแม้ว่า
Wildcard

1
รีสตาร์ทเครื่อง ฉันไม่สามารถเปิดเปลือกปกติได้ แต่ฉันสามารถแก้ไขเนื้อหาผ่าน GUI ได้ ดังที่ได้กล่าวไว้ก่อนหน้านี้ฉันได้รับข้อผิดพลาดที่ระบุว่า "ไม่สามารถดำเนินการกระบวนการลูก / bin / bash (มีลิงก์สัญลักษณ์ในระดับมากเกินไป)"
GarrukApex

5

หากคุณสามารถเข้าสู่ระบบ แต่คุณไม่สามารถเปิดเทอร์มินัลหรือเข้าถึงเชลล์ได้ แต่คุณสามารถเข้าถึงไฟล์ผ่าน GUI ไปที่/binค้นหาไฟล์ที่ชื่อลงท้ายด้วยsh(แต่ไม่ใช่.sh) และเรียกใช้หนึ่ง (โดยดับเบิลคลิก หรือคลิกขวา) มองหาสิ่งต่อไปนี้โดยเฉพาะ:

  • sh
  • dash
  • ash
  • ksh (หรือkshตามด้วยหมายเลข; เช่น,  ksh93)
  • zsh
  • yash

หรือเป็นทางเลือกสุดท้าย

  • tcsh หรือ
  • csh

ถ้าคุณได้รับเปลือกทำงานแล้วลองตอบ Philippos ของ

อีกวิธีหนึ่งคือการบูตเข้าสู่โหมดเดียวที่ผู้ใช้ต่อไปนี้คำแนะนำเหล่านี้ แต่ระบุinit=/bin/sh(หรือหนึ่งของเปลือกหอยอื่น ๆ ) init=/bin/bashแทน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.