Như tôi đã thấy về LXC Nó lưu trữ thông tin vùng chứa và (với kho lưu trữ sao lưu mặc định) hệ thống tập tin gốc dưới / var / lib / lxc. Các mẫu tạo container cũng có xu hướng lưu trữ thông tin phân phối được lưu trong bộ nhớ cache trong / var / cache / lxc.
Vì vậy, thông thường truy cập vào hệ thống tập tin gốc chỉ được phép quản trị trừ khi có hồ sơ người dùng cấu hình sai hoặc cấu hình sai trong khi tạo chúng.
Nhưng các nhà phát triển Ubuntu có thể đã đi đến điểm này và họ đã cung cấp một giải pháp an toàn với sự trợ giúp của AppArmor.
Các tàu LXC có hồ sơ Apparmor nhằm bảo vệ chủ nhà khỏi sự lạm dụng vô tình của đặc quyền bên trong container. Chẳng hạn, container sẽ không thể ghi vào /proc/sysrq-trigger
hoặc vào hầu hết /sys
các tệp.
Cấu hình usr.bin.lxc-start được nhập bằng cách chạy lxc-start. Cấu hình này chủ yếu ngăn lxc-start gắn các hệ thống tệp mới bên ngoài hệ thống tệp gốc của bộ chứa. Trước khi thực hiện init của container, LXC yêu cầu chuyển sang cấu hình của container. Theo mặc định, cấu hình này là chính sách mặc định lxc-container được xác định trong /etc/apparmor.d/lxc/lxc-default
. Cấu hình này ngăn không cho container truy cập vào nhiều đường dẫn nguy hiểm và gắn hầu hết các hệ thống tệp.
Nếu bạn thấy rằng lxc-start bị lỗi do quyền truy cập hợp pháp bị từ chối bởi chính sách Apparmor của nó, bạn có thể vô hiệu hóa hồ sơ bắt đầu lxc bằng cách thực hiện:
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/
Điều này sẽ làm cho lxc-start chạy không được kiểm soát, nhưng tiếp tục giới hạn chính container. Nếu bạn cũng muốn tắt chức năng giam cầm của container, ngoài việc vô hiệu hóa usr.bin.lxc-start
hồ sơ, bạn phải thêm:
lxc.aa_profile = unconfined
vào tập tin cấu hình của bộ chứa. Nếu bạn muốn chạy một container trong một cấu hình tùy chỉnh, bạn có thể tạo một cấu hình mới bên dưới /etc/apparmor.d/lxc/
. Tên của nó phải bắt đầu bằng lxc- để lxc-start được phép chuyển sang cấu hình đó. Sau khi tạo chính sách, tải nó bằng cách sử dụng:
sudo apparmor_parser -r /etc/apparmor.d/lxc-containers
Hồ sơ sẽ tự động được tải sau khi khởi động lại, bởi vì nó có nguồn gốc từ tệp /etc/apparmor.d/lxc-containers
. Cuối cùng, để làm cho CN container sử dụng mới này lxc-CN-profile
, hãy thêm dòng sau vào tệp cấu hình của nó:
lxc.aa_profile = lxc-CN-profile
lxc-execute
không nhập vào hồ sơ Apparmor, nhưng thùng chứa nó sinh ra sẽ bị giới hạn.