Jak widziałem o LXC Przechowuje informacje o kontenerze i (przy domyślnym magazynie kopii zapasowych) główne systemy plików w / var / lib / lxc. Szablony tworzenia kontenerów przechowują również buforowane informacje o dystrybucji w / var / cache / lxc.
Zasadniczo dostęp do głównego systemu plików jest dozwolony tylko dla administratorów, chyba że podczas ich tworzenia wystąpi błąd lub niewłaściwa konfiguracja profili użytkowników.
Ale deweloperzy Ubuntu mogli już do tego dojść i zapewnili bezpieczne rozwiązanie przy pomocy AppArmor.
LXC jest dostarczany z profilem Apparmor, który ma chronić hosta przed przypadkowym niewłaściwym wykorzystaniem uprawnień w kontenerze. Na przykład kontener nie będzie mógł zapisywać /proc/sysrq-trigger
ani do większości /sys
plików.
Profil usr.bin.lxc-start jest wprowadzany przez uruchomienie lxc-start. Profil ten przede wszystkim uniemożliwia lxc-startowi montowanie nowych systemów plików poza głównym systemem plików kontenera. Przed uruchomieniem init kontenera LXC żąda przełączenia do profilu kontenera. Domyślnie ten profil jest domyślną polityką kontenera lxc, która jest zdefiniowana w /etc/apparmor.d/lxc/lxc-default
. Ten profil uniemożliwia kontenerowi dostęp do wielu niebezpiecznych ścieżek i montaż większości systemów plików.
Jeśli stwierdzisz, że lxc-start kończy się niepowodzeniem z powodu legalnego dostępu, którego odmawia jego polityka Apparmor, możesz wyłączyć profil lxc-start, wykonując:
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/
Spowoduje to, że lxc-start będzie działał nieskończenie, ale nadal będzie ograniczał sam kontener. Jeśli chcesz również wyłączyć ograniczenie kontenera, oprócz usr.bin.lxc-start
profilu musisz dodać:
lxc.aa_profile = unconfined
do pliku konfiguracyjnego kontenera. Jeśli chcesz uruchomić kontener w profilu niestandardowym, możesz utworzyć nowy profil w /etc/apparmor.d/lxc/
. Jego nazwa musi zaczynać się od lxc-, aby lxc-start mógł przejść do tego profilu. Po utworzeniu zasady załaduj ją za pomocą:
sudo apparmor_parser -r /etc/apparmor.d/lxc-containers
Profil zostanie automatycznie załadowany po ponownym uruchomieniu, ponieważ pochodzi z pliku /etc/apparmor.d/lxc-containers
. Na koniec, aby kontener CN używał tego nowego lxc-CN-profile
, dodaj następujący wiersz do pliku konfiguracyjnego:
lxc.aa_profile = lxc-CN-profile
lxc-execute
nie wchodzi do profilu Apparmor, ale pojemnik, który spawnuje, będzie ograniczony.