10 Namespaces

10.1 Einführung

Namespaces sind ein zentraler Bestandteil der Linux-Containerisierung. Verschiedene Befehle ermöglichen es, diese Namespaces zu verwalten und zu nutzen. Hier sind die wichtigsten Befehle und ihre Verwendung.

10.2 Übersicht der Namespace-Befehle

10.2.1 unshare

unshare ermöglicht das Starten eines neuen Prozesses in einem oder mehreren neuen Namespaces.

10.2.1.1 Verwendung:

unshare [OPTIONEN] PROGRAMM [ARGUMENTE...]

10.2.1.2 Wichtige Optionen:

10.2.2 nsenter

nsenter erlaubt es, in einen bestehenden Namespace eines anderen Prozesses einzutreten.

10.2.2.1 Verwendung:

nsenter [OPTIONEN] --target PID PROGRAMM [ARGUMENTE...]

10.2.2.2 Wichtige Optionen:

10.2.3 lsns

lsns listet alle Namespaces auf dem System auf und zeigt Informationen über sie an.

10.2.3.1 Verwendung:

lsns [OPTIONEN]

10.2.3.2 Wichtige Optionen:

10.2.4 setns

setns verbindet einen Prozess mit einem bestehenden Namespace.

10.2.4.1 Verwendung:

setns FD TYPE

10.2.5 joinns

joinns ermöglicht das Betreten eines Namespaces durch einen bestehenden Prozess. Es ist eine Kombination aus nsenter und setns.

10.2.5.1 Verwendung:

joinns PID [COMMAND]

10.3 Unterschiede in der Verwendung

10.3.1 Normaler Benutzer vs. Root

10.3.2 Verwendung in verschiedenen Kontexten

10.4 Beispiele

10.4.1 unshare als Root

sudo unshare -p --fork --mount-proc=/proc /bin/bash

Startet eine neue Bash-Shell in einem separaten PID-Namespace mit einem neuen /proc-Verzeichnis.

10.4.2 nsenter als Root

sudo nsenter --target 1234 --pid --mount /bin/bash

Tritt in den PID- und Mount-Namespace des Prozesses mit der PID 1234 ein.

10.4.3 lsns als normaler Benutzer

lsns

Listet alle Namespaces auf, die der Benutzer sehen darf.

10.4.4 setns als Root

sudo sh -c 'exec nsenter --target $(pgrep -f "process_name") --mount --uts --ipc --net --pid'

Tritt in alle Namespaces des Prozesses ein, der process_name ausführt.

Namespaces sind ein mächtiges Werkzeug zur Isolierung und Verwaltung von Systemressourcen unter Linux. Die verschiedenen Befehle wie unshare, nsenter, lsns, setns und joinns bieten umfassende Möglichkeiten, Namespaces zu nutzen und zu verwalten. Abhängig von den Benutzerrechten und dem aktuellen Namespace können diese Befehle unterschiedliche Ergebnisse liefern.