6.16.1. 可利用的系统调用
容器与主机共享内核是容器的核心特性。 因此,如果内核包含任何可利用的系统调用,容器也可以利用它们。 一旦容器控制了内核,它就可以完全控制主机已知的任何资源。
从 Ubuntu 12.10 (Quantal) 开始,容器也可以被 seccomp 过滤器限制。 Seccomp 是一个新的内核特性,它过滤了一个任务及其子任务可能使用的系统调用。 虽然预计在不久的将来会改进和简化策略管理,但当前的策略包含一个简单的系统调用号码白名单。 策略文件以第一行的版本号(必须为 1)和第二行的策略类型(必须为“白名单”)开头。 后面跟着一个数字列表,每行一个。
一般来说,运行一个完整的分发容器需要大量的系统调用。 但是,对于应用程序容器,可以将可用系统调用的数量减少到仅几个。 即使对于运行完整发行版的系统容器,也可能会获得安全收益,例如通过删除 32 位容器中的 64 位兼容性系统调用。 有关如何配置容器以使用 seccomp 的详细信息,请参阅 lxc.container.conf 手册页。 默认情况下,不加载 seccomp 策略。