Answers:
如我所见,关于LXC,它在/ var / lib / lxc下存储容器信息和(使用默认的后备存储)根文件系统。容器创建模板还倾向于将缓存的分发信息存储在/ var / cache / lxc下。
因此,通常只有允许root用户访问root文件系统,除非在创建它们时使用不当或配置用户配置文件有误。
但是Ubuntu开发人员可能已经到了这一点,他们在AppArmor的帮助下提供了一个安全的解决方案。
LXC随附了一个Apparmor配置文件,旨在防止主机意外误用容器内部的特权。例如,容器将无法写入/proc/sysrq-trigger
或写入大多数/sys
文件。
通过运行lxc-start输入usr.bin.lxc-start配置文件。该配置文件主要防止lxc-start在容器的根文件系统之外挂载新文件系统。在执行容器的初始化之前,LXC请求切换到容器的配置文件。默认情况下,此配置文件是在中定义的lxc-container-default策略/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不受限制地运行,但会继续限制容器本身。如果还希望禁用容器限制,那么除了禁用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使用这个new容器lxc-CN-profile
,请在其配置文件中添加以下行:
lxc.aa_profile = lxc-CN-profile
lxc-execute
不会输入Apparmor配置文件,但将限制其生成的容器。
dmesg
可以从任何容器(至少在默认配置中)调用它。恐怕不是唯一的安全隐患...