Warum lxc anstelle von chroot verwenden?

10

Ein Ubuntu-Server hostet 3 Apps, alle in separaten Domänen.
Jede App hat ihre eigenen Entwickler.
App-Entwickler gehören zur Linux-Gruppe "sftp".
chrootermöglicht den Passwort-SFTP-Zugriff für jeden App-Entwickler.

/home/app1/prod
/home/app2/prod
/home/app3/prod

In sshd_config

Match Group sftp  
  PasswordAuthentication yes
  ChrootDirectory %h
  ForceCommand internal-sftp
  AllowTcpForwarding no

Unser Anliegen ist eine Programmierschwachstelle in einer App, die Probleme in den anderen beiden Apps verursacht.

Sollten wir lxc container anstelle von chroot verwenden? Warum? Wird die Änderung an lxc-Containern für die App-Entwickler transparent sein?

csi
quelle
2
Das einzige, was Sie tun chrootmüssen, ist das Stammverzeichnis für einen Prozess zu ändern. Es bietet keine Isolation oder irgendetwas anderes.
Zoredache

Antworten:

14

Linux Containers (LXC) sind eine Virtualisierungsmethode auf Betriebssystemebene zum Ausführen mehrerer isolierter Serverinstallationen (Container) auf einem einzelnen Steuerungshost. LXC bietet keine virtuelle Maschine, sondern eine virtuelle Umgebung mit einem eigenen Prozess und Netzwerkbereich. Es ähnelt einer Chroot, bietet aber viel mehr Isolation.

Linux-Container bieten mehrere Funktionen / Vorteile:

Vorteile:

Bessere Isolation im Vergleich zu einer Chroot (Chroot-Gefängnis). Geringer Overhead. LXC verwendet nur minimale Ressourcen in Bezug auf RAM und Festplattenspeicher, ohne dass ein Gastbetriebssystem in einer virtuellen Maschine (VMWare / VirtualBox / KVM) installiert werden muss.

Anwendungen und Dienste (Server) werden mit nativer Geschwindigkeit ausgeführt.

In libvirt werden Linux-Container unterstützt.

Linux-Container funktionieren gut mit btrfs.

Es gibt aber auch einen Nachteil:

Linux-Container führen Linux-Prozesse auf einem Linux-Kernel aus. Dies bedeutet, dass Sie Linux (Fedora-Container auf einem Ubuntu-Host) ausführen können, jedoch keine anderen Betriebssysteme (nicht BSD / OSX / Windows).

Es gibt keine grafischen GUI-Schnittstellen zum Konfigurieren oder Verwalten der Container.

Es gibt nur wenige Dokumentationen zur Installation und Konfiguration eines Containers. Die Konfiguration eines Containers erfordert ein bescheidenes technisches Wissen und Können (und viel Geduld).

Abhishek Anand Amralkar
quelle
1
Welcher Kernel wird im LXC verwendet? (die von dem Host oder dem Gast ein?)
Francesco
3
Viele der Vor- und Nachteile vergleichen LXC mit der vollständigen Virtualisierung, was für die gestellte Frage irrelevant und möglicherweise sogar irreführend ist.
Roger Dueck
@Francesco, mit LXC (und Linux-Containern im Allgemeinen) gibt es nur einen Kernel - den Host-Kernel. Einige Ausnahmen sind beispielsweise Docker unter MacOS oder Windows, da sie einen Linux-Kernel verwenden, der in einer virtuellen Maschine ausgeführt wird. Alle Linux-Container auf diesen Plattformen verwenden jedoch immer noch denselben Kernel.
Wut