为什么使用 lxc 而不是 chroot?

csi*_*csi 12 security ubuntu chroot sftp lxc

一台 ubuntu 服务器在不同的域中托管 3 个应用程序。
每个应用程序都有自己的开发人员。
应用程序开发人员属于 linux "sftp" 组。
chroot允许每个应用程序开发人员使用密码 sftp 访问。

/home/app1/prod
/home/app2/prod
/home/app3/prod
Run Code Online (Sandbox Code Playgroud)

在 sshd_config

Match Group sftp  
  PasswordAuthentication yes
  ChrootDirectory %h
  ForceCommand internal-sftp
  AllowTcpForwarding no
Run Code Online (Sandbox Code Playgroud)

我们担心一个应用程序中的编程漏洞会导致其他两个应用程序出现问题。

我们应该使用 lxc 容器而不是 chroot 吗?为什么?对 lxc 容器的更改对应用程序开发人员是透明的吗?

小智 17

Linux 容器 (LXC) 是一种操作系统级虚拟化方法,用于在单个控制主机上运行多个隔离的服务器安装(容器)。LXC 不提供虚拟机,而是提供了一个拥有自己的进程和网络空间的虚拟环境。它类似于 chroot,但提供了更多的隔离。

Linux 容器有几个特点/优点:

好处:

与 chroot(chroot jail)相比具有更好的隔离性。低开销。LXC 在 RAM 和硬盘空间方面使用最少的资源,而无需在虚拟机 (VMWare/VirtualBox/KVM) 中安装客户操作系统的开销。

应用程序和服务(服务器)以本机速度运行。

libvirt 支持 Linux 容器。

Linux 容器与 btrfs 配合得很好。

但也有一个缺点:

Linux 容器在 Linux 内核上运行 Linux 进程。这意味着您可以运行 Linux(Ubuntu 主机上的 Fedora 容器),但不能运行其他操作系统(非 BSD/OSX/Windows)。

没有用于配置或管理容器的 GUI(图形)界面。

关于如何安装和配置容器的文档很少。配置容器需要适度的技术知识和技能(以及很大的耐心)。

  • 许多优点和缺点将 LXC 与完全虚拟化进行比较,这与所提出的问题无关,甚至可能会产生误导。 (4认同)