这在手册页中有说明systemd-nspawn
请注意,即使采取了这些安全预防措施,systemd-nspawn 也不适合安全容器设置。许多安全功能可能会被规避,因此主要用于避免容器对主机系统进行意外更改。该程序的预期用途是调试和测试以及构建与启动和系统管理相关的软件包、发行版和软件。
这个问题随后被问到在 2011 年的邮件列表中,但答案似乎已经过时了。
systemd-nspawn 包含现在CLONE_NEWNET
使用该选项执行的代码。--private-network
这似乎涵盖了私有AF_UNIX
命名空间问题,我猜想提到了CAP_NET_RAW
和CAP_NET_BIND
问题。
目前还存在哪些问题?除了目前可以做的事情之外,例如 LXC 还能做什么systemd-nspawn
?
答案1
LXC 更好一些,因为它可以运行容器作为非特权用户。这可以通过 systemd-nspawn 实现,但仅适用于只需要一个用户(而不是多个用户)的场景,这对于容器场景中的多进程来说可能很困难或不太安全。如果您想知道为什么 docker、lxc 和 systemd-nspawn 本质上不是可靠的安全机制,请阅读以下内容:https://opensource.com/business/14/7/docker-security-selinux。基本上,容器仍然可以访问内核,并且任何内核漏洞都可以控制整个机器。在像 Linux 这样的单片内核上,内核漏洞并不少见。