สมมติว่ามีแอ็พพลิเคชันไบนารีที่เขียนข้อมูลไปยัง/tmp
เสมอ
ฉันจะหลอก / จำลอง/tmp
เพื่อประโยชน์ของไบนารีนี้เป็นไดเรกทอรีอื่น ๆ (เช่นhome/tmp
) ได้อย่างไร
สมมติว่าฉันไม่มีวิธีแก้ไขไบนารีนี้เพื่อบังคับให้ใช้ไดเรกทอรีอื่น
สมมติว่ามีแอ็พพลิเคชันไบนารีที่เขียนข้อมูลไปยัง/tmp
เสมอ
ฉันจะหลอก / จำลอง/tmp
เพื่อประโยชน์ของไบนารีนี้เป็นไดเรกทอรีอื่น ๆ (เช่นhome/tmp
) ได้อย่างไร
สมมติว่าฉันไม่มีวิธีแก้ไขไบนารีนี้เพื่อบังคับให้ใช้ไดเรกทอรีอื่น
คำตอบ:
คุณสามารถเรียกใช้โปรแกรมประยุกต์ในส่วนchroot
สภาพแวดล้อมเช่นการประยุกต์ใช้เห็นไม่ได้เป็นจริง/
/
คุณสร้างลำดับชั้นของระบบไฟล์ใหม่และเมานต์ ( --bind
) ทุกอย่างที่คุณต้องการ จุดที่เกี่ยวข้องคือ: คุณสามารถติดจริง~/tmp
ไป/tmp
ในchroot
สภาพแวดล้อม
แทนที่จะใช้chroot
(ซึ่งต้องการสิทธิ์ผู้ใช้ขั้นสูง) คุณสามารถทำสิ่งเดียวกันกับคอนเทนเนอร์ Linux ( lxc
) ฉันไม่คุ้นเคยlxc
แต่เป็นกระบวนการผู้ใช้ทั่วไปกับระบบโฮสต์คุณไม่จำเป็นต้องเป็น superuser สำหรับการกำหนดค่าภายในคอนเทนเนอร์
chroot
ต้องมีการตั้งค่าเพิ่มเติม (คุณจะเปลี่ยนทั้ง/
ไม่เพียง แต่/tmp
เพื่อให้การเข้าถึงใด ๆ เพื่อ/etc
, /var
ฯลฯ ก็จะภายใน "คุก") และได้สร้างความกังวลด้านความปลอดภัยของตัวเอง (ที่ "จำคุก" โปรแกรมอาจ สามารถจัดการส่วนต่าง ๆ ของระบบไฟล์ซึ่งโดยปกติจะไม่เกินขีด จำกัด หากคุณไม่ระมัดระวังในการอนุญาตเมื่อตั้งค่าของปลอม/
)
/
ไม่ จำกัด เฉพาะการเขียนใหม่root
ผู้ใช้ "ที่ถูกจำคุก" สามารถสร้างหรือแทนที่ไฟล์ที่ดูเหมือนจะอยู่ในตำแหน่งของระบบหลักเช่น/etc/passwd
; chroot
นี้จากนั้นจะสามารถนำมาใช้สำหรับการเพิ่มสิทธิ์ที่จะไม่ออกไปข้างนอกที่เป็นไปได้ เซิร์ฟเวอร์ Linux FTP จำนวนมากซึ่งโดยปกติใช้chroot
เพื่อซ่อนส่วนที่เหลือของระบบไฟล์ตอนนี้ปฏิเสธที่จะทำเช่นนั้นหากไดเรกทอรีนั้นสามารถเขียนได้โดยผู้ใช้ที่ไม่ใช่รูท
chroot
หรือlxc
ไม่สามารถทำสิ่งนี้ได้ นอกจากนี้ยังเป็นเรื่องที่ดีมากที่รู้ว่ามีวิธีการทำให้สำเร็จโดยไม่ต้องเป็นผู้ใช้ขั้นสูง