ฉันจะเปลี่ยน chmod บนไดเร็กตอรี่ etc ได้อย่างไร?


9

ฉันรันคำสั่งต่อไปนี้ในไดเร็กทอรี etc โดยไม่ได้ตั้งใจ:

sudo chmod -R 700 /etc

ฉันรู้ว่าฉันทำอะไรผิดไปมาก เทอร์มินัลของฉันพิมพ์:

I have no name!@ubuntu: /$

ฉันจะเปลี่ยนไดเรกทอรี etc เป็นสถานะก่อนหน้าได้อย่างไร

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


3
คุณต้องมีรายชื่อไดเรกทอรี ( ls -laR) จากระบบอื่นที่กำลังรันอยู่ คุณเป็นรุ่นอะไร คุณสามารถเปลี่ยนไดเรกทอรีเป็น 755 และและไฟล์เป็น 644 แต่บางคนต้องมีโหมดที่แตกต่าง (เช่น / etc / shadow เช่น)
ott--

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

1
ด้วยระบบการทำงานคุณสามารถใช้find /etc -type d ! -perm 755 -exec ls -ld {} \;และfind etc -type f ! -perm -644 -exec ls -l {} \;ค้นหาไดเรกทอรีและไฟล์ด้วยโหมดที่ไม่ได้มาตรฐาน ใน Debian มีเพียง 2 ไดเรกทอรีและ 39 ไฟล์
ott--

"แต่การเปลี่ยนสิทธิ์ทำให้ทุกอย่างเป็นอันตรายได้อย่างไร" - บางสิ่งที่จำเป็นต้องอ่านไฟล์เหล่านั้นในตอนนี้ไม่ได้รับอนุญาตให้อ่านไฟล์เหล่านั้น
user253751

คำตอบ:


15

มีสิ่งหนึ่งที่ผิดพลาด: การใช้sudoคำสั่งนั้น -Rสวิทช์บอกว่าchmodการตั้งซ้ำสิทธิ์ไปยังไดเรกทอรีที่ซึ่งเป็นในทุกกรณีที่มีการกระทำที่ไม่แนะนำ (เราควรจะเรียกมันบาป) ถ้าคุณไม่ได้รู้ว่าสิ่งที่คุณกำลังทำ (ครั้งนี้เกิดขึ้นกับผม ไม่ได้ออกคำสั่ง แต่มีข้อผิดพลาดเกิดขึ้นกับ GUI และระบบของฉันไม่ทำงาน)

มันเป็นสิทธิ์ของไฟล์เท่านั้น ถ้าเช่นนั้นทำไมระบบทั้งระบบจึงถูกลมพัดปลิวจนหมด?

GNU / Linux มีความไวต่อการอนุญาตใช้ไฟล์มากเนื่องจากมันถูกสร้างขึ้นโดยคำนึงถึงความมั่นคงและความปลอดภัยเป็นหลัก เช่นเดียวกับโปรแกรมส่วนใหญ่ที่ทำงานใน GNU / Linux (เช่นการapache2ลดระดับสิทธิ์การใช้งานรูทและการใช้www-dataงานหรือผู้ใช้ที่คล้ายกันและการ700อนุญาตของคุณไม่อนุญาตให้อ่าน / เขียนไฟล์ของตัวเอง)

ทำไมตอนนี้ไม่มีรหัสผ่านสำหรับเข้าสู่ระบบทำงานอยู่?

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

แต่การเปลี่ยนแปลงการอนุญาตทำให้เป็นอันตรายต่อทุกสิ่งได้อย่างไร

เช่นเดียวกับที่กล่าวไว้ข้างต้นลินุกซ์มีความไวต่อการอนุญาตของไฟล์ บางโปรแกรมตรวจสอบการอนุญาตของไฟล์การกำหนดค่าของพวกเขาและหากไม่ได้คาดหวังว่าจะไม่ทำงานเลย

ฉันจะเปลี่ยนไดเรกทอรี etc เป็นสถานะก่อนหน้าได้อย่างไร

หากคุณใช้ distro-based RPM สามารถทำได้โดยใช้rpm --setpermsคำสั่งมันจะเป็นการคืนค่าทีละหนึ่งอย่างเจ็บปวดบนระบบ Debian ที่apt-get --reinstall installเป็นเพื่อนของคุณ อาจมีโซลูชันอื่นให้ใช้ แต่จะต้องมีระบบที่ใช้งานได้


5

เรามาดูกันว่าสิ่งที่คุณทำคือการตั้งค่าการอนุญาตในทั้ง / etc dir เมื่ออ่าน / เขียน / ดำเนินการอนุญาตสำหรับเจ้าของไฟล์ / dir เท่านั้นที่ถูกปฏิเสธสำหรับทุกคน หากคุณกำลังสับสนโดยสิทธิ์ของแฟ้มคุณสามารถอ่านเพิ่มเติมได้ที่วิกิพีเดีย: สิทธิ์ดั้งเดิมยูนิกซ์

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

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

    # sudo find /etc -type d -exec chmod 775 '{}' \;
    # sudo find /etc -type f -exec chmod 664 '{}' \;

ด้วยสองบรรทัดเหล่านี้คุณจะสามารถตั้งค่าการอนุญาตแบบเสรีใน / etc dir โดยอนุญาตให้อ่าน / เขียนสำหรับเจ้าของและกลุ่มและอ่านอนุญาตสำหรับทุกคน เหตุผลของสอง chmod คือการตั้งค่าบิตรันบน dirs เท่านั้น กระบวนการบางอย่างจะบ่นหรือล้มเหลวดังนั้นรวมถึงการปฏิบัติการภายใน / etc แต่คุณควรจะทำการติดตั้งใหม่ที่ฉันได้อธิบายไว้ข้างต้น

โปรดทราบว่าจนกว่าคุณจะกู้คืนการอนุญาตดั้งเดิมระบบของคุณจะอยู่ในสถานะไม่ปลอดภัยอย่างน้อยที่สุด


2
นอกจากนี้บางโปรแกรมจะไม่ทำงาน SSH เช่นต้องการสิทธิ์ที่ จำกัด ในบางไฟล์ /etc/sudoersเป็นอีก
Mel Boyce

1
แต่ไฟล์บางไฟล์/etcต้องไม่ทำให้โลกอ่านได้! คืนค่าจากการสำรองข้อมูลนั่นเป็นสาเหตุที่คุณมี (หรือนั่นเป็นสาเหตุที่ผู้คนกำลังกระตุ้นให้คุณทำการสำรองข้อมูล)
tripleee

0

700 ได้ลบการเข้าถึงไฟล์จำนวนมากสำหรับกลุ่มและผู้ใช้ทั่วโลก (เช่นตอนนี้ไฟล์มีrwx------สิทธิ์) ตัวอย่างเช่นผู้ใช้ทั้งหมดต้องสามารถอ่าน/etc/passwdได้ ด้วยการตั้งค่าของคุณตอนนี้สามารถอ่าน/etc/passwdได้เฉพาะรูท มีหลายสิ่งที่จะแตกถ้าคุณละเมิดสิทธิ์ของไฟล์/etc/ด้วยวิธีที่ไม่คาดคิด

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

ฉันขอแนะนำให้กู้คืน/etc/จากการสำรองข้อมูลถ้าคุณมี (ให้แน่ใจว่าการคืนค่าทำให้สิทธิ์กลับมาหรือถ้าวิธีการสำรองข้อมูลของคุณสนับสนุนการคืนค่าเพียงสิทธิ์)

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