ตั้งค่า chmod / 777 ผิดพลาดมีปัญหา?


33

ฉันพยายามเรียกใช้chmod -R 777 ./แต่จบลงด้วยการพิมพ์chmod -R 777 /และตั้งค่า777บนเครื่องทั้งหมดของฉัน มีอะไรผิดพลาด? ฉันจะแก้ไขได้อย่างไร



สิ่งที่ผิดพลาดในระบบ? จะหยุดทำงานหรือไม่
Vinnycx

6
แน่นอนว่ามีปัญหา SSH จะล้มเหลวเช่น
ceving

2
SSH ออกหากไดเรกทอรีหลักนั้นสามารถอ่านได้ทั่วโลก การตั้งค่าทุกอย่างเป็น 777 เปรียบเสมือนการทำทุกสิ่งในฐานะรูท
ceving

3
ดูเพิ่มเติมserverfault.com/questions/364677/why-is-chmod-r-777-destructiveซึ่งจะมีรายละเอียดเพิ่มเติมเกี่ยวกับสิ่งที่จะเกิดความผิดพลาด
Gilles 'หยุดความชั่วร้าย'

คำตอบ:


46

ปัญหา? ใช่แล้ว สามารถแก้ไขได้หรือไม่ แน่ใจ เร็วกว่าการติดตั้งซ้ำหรือไม่ อาจจะไม่.

คำแนะนำของฉันคือการติดตั้งใหม่ เก็บสำรองของระบบที่มีอยู่และการกู้คืนรายชื่อแพคเกจและเนื้อหาของไฟล์ในและ/etc /varสำหรับ/usr/localคุณอาจสามารถเรียกคืนการอนุญาตด้วยตนเอง สำหรับ/homeและ/srvคุณจะต้องกู้คืนสิทธิ์จากการสำรองข้อมูล

หากนี่เป็นระบบที่มีผู้ใช้หลายคนโปรดทราบว่าการทำให้บางไฟล์ที่คนอ่านได้ทั่วโลกได้เปิดเผยสิ่งที่ควรเก็บเป็นความลับ

  • ขณะนี้รายการรหัสผ่านของคุณถูกบุกรุก: ผู้ใช้ภายในสามารถเข้าถึงรายการรหัสผ่านที่แฮชและอาจพยายามบังคับให้พวกเขา แจ้งให้ผู้ใช้ของคุณทราบถึงสิ่งนี้
  • ข้อมูลผู้ใช้ส่วนตัวทั้งหมด (คีย์ ssh รหัสผ่านที่เก็บไว้อีเมลสิ่งใดก็ตามที่ผู้ใช้อาจพิจารณาว่าเป็นความลับ) ได้ถูกเปิดเผยต่อผู้ใช้ในพื้นที่ทั้งหมด แจ้งให้ผู้ใช้ของคุณทราบถึงสิ่งนี้

หากคุณต้องการลองซ่อม (มากกว่าแบบฝึกหัดการเรียนรู้มากกว่าเส้นทางการกู้คืนภาคปฏิบัติ) ให้คืนค่าสิทธิ์ของไฟล์บางไฟล์ก่อน โปรดทราบว่าในขณะที่ไฟล์ส่วนใหญ่เปิดอยู่เกินไปบิตsetuid ที่จำเป็นบางอย่างขาดหายไป นี่คือขั้นตอนที่คุณควรทำก่อนสิ่งอื่นใด โปรดทราบว่านี่ไม่ใช่รายการที่ครบถ้วนสมบูรณ์เพียงความพยายามในการทำให้ระบบทำงานได้แทบไม่

chmod -R go-w /
chmod 440 /etc/sudoers
chmod 640 /etc/shadow /etc/gshadow
chmod 600 /etc/ssh/*_key /etc/ssh*key   # whichever matches
chmod 710 /etc/ssl/private /etc/cups/ssl
chmod 1777 /tmp /var/tmp /var/lock
chmod 4755 /bin/su /usr/bin/passwd /usr/bin/sudo /usr/bin/sudoedit
chmod 2755 /var/mail /var/spool/mail

จากนั้นคุณจะต้องกู้คืนสิทธิ์ทั้งหมดทุกที่ สำหรับไฟล์ภายใต้/usrคุณสามารถติดตั้งแพ็กเกจใหม่ด้วยคำสั่งอย่างใดอย่างหนึ่งต่อไปนี้ขึ้นอยู่กับการกระจายของคุณ:

  • หากคุณใช้ Debian, Ubuntu หรือการแจกจ่ายอื่นตาม APT คุณสามารถดำเนินการได้ apt-get --reinstall install
  • หากคุณกำลังใช้ Arch Linux คุณสามารถดำเนินการสมมติว่าคุณอยู่ในแผ่นซีดีสดและประตูชัยของคุณติดตั้งจะติดตั้งอยู่ที่pacman -S $(pacman -Qq --dbpath /newarch/var/lib/pacman) --root /newarch --dbpath /newarch/var/lib/pacman/newarch

สำหรับไฟล์ที่อยู่ด้านล่าง/etcและใช้/varไม่ได้เนื่องจากไฟล์ส่วนใหญ่จะถูกทิ้งไว้ตามเดิม: คุณจะต้องทำซ้ำการอนุญาตในการติดตั้งที่ใช้งานได้ สำหรับไฟล์ที่อยู่ด้านล่าง/srvและ/homeคุณจะต้องกู้คืนจากการสำรองข้อมูล อย่างที่คุณเห็นคุณอาจติดตั้งเช่นกัน


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

3
หากมีผู้ใช้ในระบบฉันก็สงสารพวกเขา
Jürgen A. Erhard

19

คุณอาจไม่สังเกตเห็นมันในตอนแรก แต่สิ่งต่าง ๆ มากมายสามารถและจะผิดไป ปัญหาหลักคือรูปแบบความปลอดภัยทั้งหมดสำหรับทั้งระบบเสียหาย มันเหมือนกับมีร่างกายที่ไม่มีผิวหนังอวัยวะทั้งหมดอยู่ในอากาศ มันถูกผูกติดกับการติดเชื้อเพราะมันไม่ได้หมายความว่าทำหน้าที่อย่างนั้น แม้ว่ามันจะใช้งานได้สักครู่ แต่คุณต้องทำความสะอาด

วิธีที่ดีที่สุดคือเริ่มจากศูนย์ วิธีนี้จะช่วยลดความเสี่ยงของคุณได้อย่างมากและให้ผลลัพธ์ที่สะอาดกว่าในเวลาที่น้อยลง หากคุณมีการสำรองข้อมูลที่ถูกต้องสิ่งนี้ไม่ควรลองด้วยเช่นกัน

หากคุณพยายามทำความสะอาดวิธีหลักคือบอกให้ผู้จัดการแพ็คเกจของ distro ติดตั้ง EVERYTHING ทุกอย่างในระบบรวมถึงเขียนทับไฟล์กำหนดค่า จากนั้นใช้ระบบตรวจสอบอะไรก็ตามที่มีการตรวจสอบพวกเขาและตรวจสอบให้แน่ใจว่าไม่มีพวกเขาถูกตั้งค่าสถานะว่ามีไฟล์ที่มีสิทธิ์ออกจากสามัญ จากนั้นทำงานผ่านสิ่งต่างๆเช่นไดเรกทอรีบ้านของผู้ใช้และรีเซ็ตทุกอย่างให้มีสิทธิ์ใช้งานอย่างสมบูรณ์จากนั้นทำบางสิ่งที่ควรมีสิทธิ์พิเศษ (เช่นไฟล์คีย์ ssh) สุดท้ายทำระบบทั้งหมดค้นหาทุกสิ่งที่ทำเครื่องหมายเป็น 777 และทำรายการ (ควรเล็กถ้าคุณทำขั้นตอนอื่น ๆ อย่างละเอียด) และทำงานผ่านพวกเขาทีละคนทำให้แน่ใจว่าพวกเขาควรจะเป็น


แต่นอกเหนือจากความปลอดภัยแล้วแอพพลิเคชั่นจะมีอะไรผิดปกติ? พวกเขาจะหยุดทำงานหรือไม่ หรือความปลอดภัยเป็นปัญหาใหญ่ที่สุดที่นี่?
Vinnycx

การรักษาความปลอดภัยเป็นเรื่องที่ใหญ่ที่สุด แต่หลาย ๆ โปรแกรมโดยเฉพาะอย่างยิ่งเบื้องหลังสิ่งต่าง ๆ เช่นการบันทึก daemons cron ฯลฯ จะล้มเหลวด้วยเหตุผลต่าง ๆ แทนที่จะใส่ตัวเองในสถานการณ์อันตรายที่พวกเขาเห็น
Caleb

cron จะหยุดทำงานเพียงเพราะ 777?
Vinnycx

1
มีหลายระบบ cron ที่แตกต่างกัน แต่ไม่มี cron เคารพตัวเองควรดำเนินงานใน cron ของรากเมื่อไฟล์ crontab เป็นโลกที่เขียนได้! นอกจากนี้ mail daemon ที่จัดการกับการแจ้งเตือน cron ควรบ่นด้วยเหตุผลอื่น
Caleb

10

การแก้ไข: ฉันทดสอบสิ่งนี้ในเซ็นโตส

ผู้ชายคนนี้บันทึกงานของฉัน! (คุณจำเป็นต้องเข้าถึงอย่างใด)

http://www.adminlinux.org/2009/07/how-to-restore-default-system.html

1) เพื่อรีเซ็ต uids และ gids บนไฟล์และไดเรกทอรี:

for u in $(rpm -qa); do rpm --setugids $u; done

2) การอนุญาตในไฟล์และไดเรกทอรี

for p in $(rpm -qa); do rpm --setperms $p; done

จากนั้นเปลี่ยนการอนุญาตด้วยตนเองเป็นไฟล์เหล่านี้:

# ll /etc/ssh/
# chmod 600 /etc/ssh/ssh_host_rsa_key
# chmod 600 /etc/ssh/ssh_host_dsa_key
# service sshd restart

5

บางโปรแกรมที่คำนึงถึงความปลอดภัยจะไม่เริ่มทำงานหากไฟล์บางไฟล์มีการอนุญาตแบบ "หลวม" เกินไป ตามที่ @ceving กล่าวว่าsshdเป็นเรื่องปกติที่สุด

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

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


แต่นอกเหนือจากความปลอดภัยแล้วแอพพลิเคชั่นจะมีอะไรผิดปกติ? พวกเขาจะหยุดทำงานหรือไม่ หรือความปลอดภัยเป็นปัญหาใหญ่ที่สุดที่นี่?
Vinnycx

เพียงสองแอปพลิเคชันที่ปฏิเสธที่จะเริ่มต้นหากการอนุญาตหลวมเกินไป ความปลอดภัยเป็นเรื่องที่สำคัญที่สุด แต่มันก็มีความเสถียรของระบบด้วยเช่นกัน หากคุณrm -rf /เป็นผู้ใช้ปกติในตอนนี้คุณจะต้องหยุดระบบของคุณ
LawrenceC

แอปพลิเคชันใดที่อาจหยุดทำงาน
Vinnycx

นอกเหนือจาก SSH มีอะไรอีกบ้างที่ล้มเหลว? ฉันต้องการตอนนี้ถ้าฉันสามารถออกจากระบบเช่นนี้ไปได้ซักพัก
Vinnycx

5
@Vinnycx: ไม่สามารถทำได้ มันแตก. คุณควรให้ความสำคัญกับการแก้ไข มิฉะนั้นคาดว่าบริการของคุณจะล้มเหลวคุณทีละคนและแฮกเกอร์กินข้อมูลของคุณ การออกจาก / * @ 777 ไม่ใช่ตัวเลือก
Caleb
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.