GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux – Kernel:Namespaces-Unterstützung?

Ich frage mich, was genau die Funktion „Namespaces-Unterstützung“ im Linux-Kernel bedeutet. Ich verwende Kernel 3.11.1 (der neueste stabile Kernel zu diesem Zeitpunkt).

Wenn ich mich entscheide, es zu deaktivieren, bemerke ich irgendwelche Änderungen auf meinem System?

Und falls jemand beschließt, Namespaces zu verwenden, reicht es aus, einfach NAMESPACES=Y zu kompilieren im Kernel, oder braucht er auch Userspace-Tools?

Akzeptierte Antwort:

Kurz gesagt bieten Namespaces eine Möglichkeit, ein virtuelles Linux-System innerhalb eines größeren Linux-Systems aufzubauen. Dies unterscheidet sich vom Ausführen einer virtuellen Maschine, die als nicht privilegierter Prozess ausgeführt wird:Die virtuelle Maschine erscheint als einzelner Prozess auf dem Host, während Prozesse, die innerhalb eines Namespaces ausgeführt werden, weiterhin auf dem Hostsystem ausgeführt werden.

Ein virtuelles System, das innerhalb eines größeren Systems läuft, wird als Container bezeichnet. Die Idee eines Containers ist, dass Prozesse, die innerhalb des Containers ausgeführt werden, glauben, dass sie die einzigen Prozesse im System sind. Insbesondere hat der Root-Benutzer innerhalb des Containers keine Root-Rechte außerhalb des Containers (beachten Sie, dass dies nur in ausreichend aktuellen Versionen des Kernels der Fall ist).

Namespaces virtualisieren jeweils ein Feature. Einige Beispiele für Namespace-Typen sind:

  • Benutzer-Namespaces – Dadurch können sich Prozesse so verhalten, als ob sie als unterschiedliche Benutzer innerhalb und außerhalb des Namespace ausgeführt würden. Insbesondere haben Prozesse, die als UID 0 innerhalb des Namensraums laufen, Superuser-Privilegien nur in Bezug auf Prozesse, die im selben Namensraum laufen.
    Seit dem Linux-Kernel 3.8 können nicht privilegierte Benutzer Benutzer-Namensräume erstellen. Dadurch kann ein normaler Benutzer Funktionen nutzen, die Root vorbehalten sind (wie das Ändern von Routing-Tabellen oder das Einstellen von Fähigkeiten).
  • PID-Namespaces – Prozesse innerhalb eines PID-Namespaces können Prozesse außerhalb dieses Namespaces nicht beenden oder verfolgen.
  • Mount-Namespaces — Dies ermöglicht Prozessen, ihre eigene Ansicht des Dateisystems zu haben. Diese Ansicht kann eine Teilansicht sein, die es ermöglicht, einige Teile des Dateisystems auszublenden und Teile neu zusammenzusetzen, sodass Verzeichnisbäume an verschiedenen Stellen erscheinen. Mount-Namespaces verallgemeinern das traditionelle Unix-Feature chroot, das es ermöglicht, Prozesse auf einen bestimmten Teilbaum zu beschränken.
  • Netzwerk-Namespaces – ermöglichen die Trennung von Netzwerkressourcen (Netzwerkgeräten) und verbessern so die Isolierung von Prozessen.

Namespaces verlassen sich auf den Kernel, um eine Isolierung zwischen Namespaces bereitzustellen. Dies ist ziemlich kompliziert, um es richtig zu machen, daher können immer noch Sicherheitslücken herumliegen. Das Risiko von Sicherheitslücken wäre der Hauptgrund, die Funktion nicht zu aktivieren. Ein weiterer Grund, es nicht zu aktivieren, wäre, wenn Sie einen kleinen Kernel für ein eingebettetes Gerät erstellen. In einem Allzweck-Kernel, den Sie auf einem typischen Server oder einer typischen Workstation installieren würden, sollten Namespaces aktiviert sein, wie jedes andere ausgereifte Kernel-Feature.

Verwandte:Linux – Können wir Compiler-Informationen von einer Elf-Binärdatei erhalten?

Es gibt immer noch wenige Anwendungen, die Namespaces verwenden. Hier sind ein paar:

  • LXC ist gut etabliert. Es verlässt sich auf cgroups, um Container bereitzustellen.
  • virt-sandbox ist ein neueres Sandboxing-Projekt.
  • Neuere Versionen von Chromium verwenden, sofern verfügbar, auch Namespaces für Sandboxing.
  • Das uWSGI-Framework für geclusterte Anwendungen verwendet Namespaces für verbessertes Sandboxing.

Weitere Informationen finden Sie in der LWN-Artikelserie von Michael Kerrisk.


Linux
  1. Der Lebenszyklus des Linux-Kernel-Testens

  2. Linux-Namespaces

  3. Installieren Sie den Linux-Kernel 4.12 in openSUSE

  4. So aktualisieren Sie den Kernel auf dem Linux-Desktop

  5. Linux – Kernel-IP-Weiterleitung?

sysctl-Befehl unter Linux

Was tun bei einer Linux-Kernel-Panik?

Aktualisieren Sie den Linux-Kernel von CentOS 8

Vollständiges Handbuch zur Linux-Protokollierung

Linux – Diagramm des Linux-Kernels vs. Performance-Tools?

Linux Kernel 5.0 veröffentlicht, neue Funktionen und Verbesserungen!