อย่างที่ฉันได้เห็นเกี่ยวกับLXCมันเก็บข้อมูลคอนเทนเนอร์และ (พร้อมกับที่เก็บข้อมูลสำรอง) ระบบไฟล์รูทภายใต้ / var / lib / lxc เทมเพลตการสร้างคอนเทนเนอร์ยังมีแนวโน้มที่จะเก็บข้อมูลการกระจายแคชไว้ภายใต้ / var / cache / lxc
ดังนั้นโดยทั่วไปการเข้าถึงระบบไฟล์รูทอนุญาตให้ผู้ดูแลระบบเท่านั้นเว้นแต่จะมีโปรไฟล์ผู้ใช้การกำหนดค่าที่ไม่ถูกต้องหรือไม่ถูกต้องในขณะที่สร้างพวกเขา
แต่นักพัฒนา Ubuntu อาจมาถึงจุดนี้แล้วและพวกเขาได้มอบโซลูชันที่ปลอดภัยด้วยความช่วยเหลือของ AppArmor
LXC มาพร้อมกับโปรไฟล์ Apparmor ที่มีวัตถุประสงค์เพื่อปกป้องโฮสต์จากการใช้งานโดยไม่ได้ตั้งใจในสิทธิ์ ตัวอย่างเช่นคอนเทนเนอร์จะไม่สามารถเขียนไปยัง/proc/sysrq-trigger
หรือ/sys
ไฟล์ส่วนใหญ่
โปรไฟล์ usr.bin.lxc-start ถูกป้อนโดยการรัน lxc-start โปรไฟล์นี้ป้องกัน lxc-start เป็นหลักจากการติดตั้งระบบไฟล์ใหม่นอกระบบไฟล์รูทของคอนเทนเนอร์ ก่อนดำเนินการ init ของคอนเทนเนอร์ LXC ร้องขอสวิตช์ไปยังโปรไฟล์ของคอนเทนเนอร์ โดยค่าเริ่มต้นโปรไฟล์นี้เป็นนโยบาย LXC /etc/apparmor.d/lxc/lxc-default
ภาชนะเริ่มต้นที่กำหนดไว้ใน โปรไฟล์นี้ป้องกันไม่ให้คอนเทนเนอร์เข้าถึงเส้นทางที่อันตรายมากมายและจากการติดตั้งระบบไฟล์ส่วนใหญ่
หากคุณพบว่า lxc-start ล้มเหลวเนื่องจากการเข้าถึงที่ถูกต้องตามกฎหมายซึ่งถูกปฏิเสธโดยนโยบาย Apparmor คุณสามารถปิดใช้งานโปรไฟล์ lxc-start ได้โดยทำดังนี้:
sudo apparmor_parser -R /etc/apparmor.d/usr.bin.lxc-start
sudo ln -s /etc/apparmor.d/usr.bin.lxc-start /etc/apparmor.d/disabled/
สิ่งนี้จะทำให้ lxc-start รัน unconfined แต่ยังคง จำกัด คอนเทนเนอร์เอง หากคุณต้องการปิดการใช้งานการ จำกัด ของคอนเทนเนอร์นอกจากจะปิดใช้งานusr.bin.lxc-start
โปรไฟล์แล้วคุณต้องเพิ่ม:
lxc.aa_profile = unconfined
ไปยังไฟล์การกำหนดค่าของคอนเทนเนอร์ /etc/apparmor.d/lxc/
หากคุณต้องการที่จะเรียกใช้ภาชนะในรายละเอียดที่กำหนดเองที่คุณสามารถสร้างโปรไฟล์ใหม่ภายใต้ ชื่อต้องเริ่มต้นด้วย lxc- เพื่อให้ lxc-start ได้รับอนุญาตให้เปลี่ยนไปใช้โปรไฟล์นั้น หลังจากสร้างนโยบายให้โหลดโดยใช้:
sudo apparmor_parser -r /etc/apparmor.d/lxc-containers
/etc/apparmor.d/lxc-containers
รายละเอียดจะโหลดโดยอัตโนมัติหลังจากรีบูตเพราะมันมีที่มาจากแฟ้ม สุดท้ายเพื่อให้คอนเทนเนอร์ CN ใช้สิ่งนี้ใหม่lxc-CN-profile
เพิ่มบรรทัดต่อไปนี้ลงในไฟล์กำหนดค่า:
lxc.aa_profile = lxc-CN-profile
lxc-execute
ไม่ได้ป้อนโปรไฟล์ Apparmor แต่คอนเทนเนอร์ที่วางไข่จะถูก จำกัด