当/etc/default/lxc中的USE_LXC_BRIDGE="true"的时候,桥lxcbr0会在lxc启动的时候自动创建,并且被赋予10.0.3.1的ip地址,使用这个桥的lxc实例可以从10.0.3.0/24中分配ip。一个dnsmasq实例在后台运行用来监听lxcbr0,用来实现dns和dhcp的功能。
2. 使用隔离的文件系统作为lxc实例的存储
lxc实例的配置信息以及根文件系统都存放在/var/lib/lxc目录下,另外,没创建一个实例也会将其cache到/var/lib/lxc目录下。如果你想使用除/var之外的其他文件系统的话,也可以通过以下两种方式来实现:
sudo mkdir /srv/lxclib /srv/lxccache sudo rm -rf /var/lib/lxc /var/cache/lxc sudo ln -s /srv/lxclib /var/lib/lxc sudo ln -s /srv/lxccache /var/cache/lxc
或者:sudo mkdir /srv/lxclib /srv/lxccache sudo sed -i '$a \ /srv/lxclib /var/lib/lxc none defaults,bind 0 0 \ /srv/lxccache /var/cache/lxc none defaults,bind 0 0' /etc/fstab sudo mount -a
3. LXC的安全性 -- apparmor(应用程序访问控制系统) AppArmor 是一个类似于selinux 的东东,主要的作用是设置某个可执行程序的访问控制权限,可以限制程序 读/写某个目录/文件,打开/读/写网络端口等等。默认情况下AppArmor已安装并载入。它使用每个程序的profiles来确定这个程序需要什么文件和权限。有些包会安装它们自己的profiles,额外的profiles可以在apparmor-profiles包里找到。
下面简单介绍下AppArmor的使用:
(1)apparmor_status是用来查看AppArmor配置文件的当前状态的
sudo apparmor_status
(2)aa-complain将一个程序置入complain模式。sudo aa-complain /path/to/bin //可执行程序的路径
(3)aa-enforce将一个程序置入enforce模式
sudo aa-enforce /path/to/bin //可执行程序的路径
/etc/apparmor.d目录是AppArmor配置文件的所在之处。可用来操作所有配置文件的模式mode。(4)要将所有配置文件置入complain模式,输入:
sudo aa-complain /etc/apparmor.d/*
(5)要将所有配置文件置入enforce模式:
sudo aa-enforce /etc/apparmor.d/*
(6)apparmor_parser用来将一个配置文件载入内核。它也可以通过使用-r选项来重新载入当前已载入的配置文件。要载入一个配置文件:
cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a
(7)要重新载入一个配置文件:
cat /etc/apparmor.d/profile.name | sudo apparmor_parser -r
(8)/etc/init.d/apparmor可用来重新载入所有配置文件:
sudo /etc/init.d/apparmor reload
(9)The /etc/apparmor.d/disable目录可以和apparmor_parser -R选项一起使用以禁用一个配置文件。
sudo ln -s /etc/apparmor.d/profile.name /etc/apparmor.d/disable/ sudo apparmor_parser -R /etc/apparmor.d/profile.name
(10)要重新激活 一个已禁用的配置文件,请在 /etc/apparmor.d/disable/里删除到其配置文件的软链接。然后使用选项 -a载入配置文件。
sudo rm /etc/apparmor.d/disable/profile.name cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a
(11)AppArmor可以被禁用,其内核模块可以通过输入以下命令卸载:
sudo /etc/init.d/apparmor stop sudo update-rc.d -f apparmor remove
(12)要重新启用AppArmor,输入:
sudo /etc/init.d/apparmor start sudo update-rc.d apparmor defaults
至于如何编写AppArmor的配置文件,将会在后面的文章中介绍!言归正传,重新回到lxc中的AppArmor上来。
LXC利用AppArmor配置文件来保护主机不受容器内实例的恶意行为,比如:容器内的实例对/proc/sysrq-tigger以及/sys目录下的绝大部分文件不具有写权限。另外,usr.bin.lxc-start配置文件用来防止lxc-start挂载除了容器根目录下列出的其他文件。在执行容器实例的init进程之前,还回去/etc/apparmor.d/lxc/lxc-default进行权限的检查,禁止init访问一些危险的资源。