การลบสิทธิ์การเขียนไม่ได้ป้องกันไม่ให้รูทเขียนไฟล์


31

ฉันเพิ่งสังเกตเห็นบนเครื่อง Ubuntu ของฉัน (ระบบไฟล์ ext3) ว่าการลบสิทธิ์การเขียนจากไฟล์ไม่ได้ป้องกันไม่ให้รูทเครื่องเขียน

นี่เป็นกฎทั่วไปของการอนุญาตไฟล์ UNIX หรือไม่ หรือเฉพาะอูบุนตู? หรือการกำหนดค่าผิดพลาดในเครื่องของฉัน

# touch abc
# chmod ugo-w abc
# python
Python 2.6.4 (r264: 75706, 7 ธันวาคม 2009, 18:45:15) 
[GCC 4.4.1] บน linux2
พิมพ์ "ความช่วยเหลือ", "ลิขสิทธิ์", "เครดิต" หรือ "ใบอนุญาต" สำหรับข้อมูลเพิ่มเติม
>>> เปิด ('abc', 'w') เขียน ('AAA \ n')
>>> 
# cat abc
AAA

การเขียนไฟล์ล้มเหลว (ตามที่คาดไว้) ถ้าฉันทำสิ่งนี้จากบัญชีผู้ใช้ปกติของฉัน

  1. นี่เป็นพฤติกรรมปกติหรือไม่

  2. มีวิธีป้องกันไม่ให้รูทเขียนไฟล์โดยไม่ตั้งใจหรือไม่? (ควรใช้กลไกระบบไฟล์ปกติไม่ใช่ AppArmor เป็นต้น)

โปรดสอนฉันเกี่ยวกับบางสิ่งที่ฉันไม่เข้าใจจริงๆ

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

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

คำตอบ:


46

1) นี่เป็นพฤติกรรมปกติ root มีการเข้าถึง rw ในไฟล์ทั้งหมดตลอดเวลา

2) คุณสามารถป้องกันไฟล์ได้แม้กระทั่งจากรูท (ไม่ใช่การกระทำโดยเจตนา แต่โดยไม่ตั้งใจ) โดยใช้

chattr +i filename.ext

นั่นคือ "คุณลักษณะการเปลี่ยนแปลงเพิ่มไม่เปลี่ยนรูป" ในการลบการป้องกัน:

chattr -i filename.ext

ดูman chattrข้อมูลเพิ่มเติมได้ที่


@ ราคา: ขอบคุณมาก ตอบคำถามของฉันโดยตรง ไม่รู้เรื่อง chattr
laramichaels

chattrระบบของฉันดูเหมือนว่าจะเข้าถึงรากจำเป็นต้องใช้ มีโหมดผู้ใช้ในการตั้งค่าคุณลักษณะดังกล่าวหรือไม่?
ต้มตุ๋น quixote

1
... ถึงแม้ว่ามันจะเป็นคำตอบที่ดีสำหรับคำถาม "สามารถrootปกป้องไฟล์ได้ดีแม้เขาไม่สามารถลบได้"!
ต้มตุ๋น quixote

4
แม่นยำยิ่งขึ้น (ในกรณีของ Linux) รูทมีCAP_DAC_OVERRIDEความสามารถในการอนุญาตให้เขาละเว้น ACL และการอนุญาต
grawity

1
FYI ซึ่งเทียบเท่ากับสิ่งนี้ใน OS X คือsudo chflags <s|u>chg <file>การทำให้ไม่เปลี่ยนรูปสำหรับระบบหรือผู้ใช้ตามลำดับและsudo chflags no<s|u>chg <file>สำหรับการยกเลิกการตั้งค่าสถานะไม่เปลี่ยนรูปสำหรับระบบหรือผู้ใช้ตามลำดับ
GDP2

3
  1. ใช่มันเป็นเรื่องปกติ รูตคือพระเจ้า

  2. ใช่มีวิธีการป้องกันไม่ให้รูททับไฟล์

    • ตั้งค่าบิตที่ไม่เปลี่ยนรูปด้วยchattr( +iset, -iunsets) ต้องการการเข้าถึงรูทใช้งานได้กับ ext2 / ext3 เท่านั้น (น่าจะเป็น ext4 ด้วย) แต่ก็สามารถใช้งานได้จริง
    • อย่าเรียกใช้แอปในฐานะรูท ไม่มีการรูทส่วนตัวไม่มีการเขียนทับไฟล์ ใช้sudoเพื่อเข้าถึงฟังก์ชั่นระบบ
    • ถอนติดตั้งระบบไฟล์ ไม่มี fs ที่เมาท์ไม่มีไฟล์แทนที่ [*]
    • ปิดเครื่องคอมพิวเตอร์ ไม่มีไฟฟ้าไม่มีไฟล์เขียนทับ

วิธีการเหล่านี้มีเหตุผลตาม # 1 อย่างที่คุณเห็นวิธีการสองวิธีสุดท้ายโดยทั่วไปไม่มีประโยชน์เช่นเดียวกับที่ป้องกัน Windows จากไวรัสโดยการถอดปลั๊กเครือข่ายโดยทั่วไปจะไม่มีประโยชน์ นี่คือสาเหตุที่รูทเป็นอันตราย [+]

[*] การลดความเป็นไปได้ของการเขียน "ตั้งใจ" โดยตรงไปยังอุปกรณ์บล็อกแน่นอน ใช่รูตสามารถทำเช่นนั้นได้ ใช่คุณสามารถป้องกันได้: ตัดการเชื่อมต่ออุปกรณ์

[+] นี่คือที่มาของตำนานของ BOfH พวกเขาไม่ใช่ตำนานทั้งหมด


@ ~ quack: วิธีการของ brice นั้นเป็นวิธีที่ใช้งานได้จริงมากกว่ารายการที่คุณสามคน :)
laramichaels

@ ~ นักต้มตุ๋น: คำถามของฉันทำให้มันชัดเจนฉันเข้าใจปัญหาเกี่ยวกับการเรียกใช้คำสั่งเป็นราก
laramichaels

3

คุณยังสามารถ จำกัด การเข้าถึงไฟล์สำหรับผู้ใช้รูทได้โดยใช้เคอร์เนล "ความสามารถ" ของ Linux: http://www.securityfocus.com/infocus/1400

นอกจากนี้ยังมีความเป็นไปได้ในการใช้ SE-Linux หรือเคอร์เนลตัวปะแก้อื่น ๆ เพื่อทำให้ไฟล์บางไฟล์ไม่เปลี่ยนรูปแม้แต่กับรูท


0

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

ดังนั้นไม่มีโอกาสที่คุณจะปิดใช้งานบัญชีรูทเท่านั้นเพื่อป้องกันการใช้งานที่ไม่ดี

ความนับถือ

[หมายเหตุตนเอง: เจ้าจะต้องต่ำต้อย ... บางทีเจ้าผิด]

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