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.
unshareunshare ermöglicht das Starten eines neuen Prozesses in
einem oder mehreren neuen Namespaces.
unshare [OPTIONEN] PROGRAMM [ARGUMENTE...]-i: IPC-Namespace-m: Mount-Namespace-n: Netzwerk-Namespace-p: PID-Namespace-u: UTS-Namespace-U: Benutzer-Namespacensenternsenter erlaubt es, in einen bestehenden Namespace eines
anderen Prozesses einzutreten.
nsenter [OPTIONEN] --target PID PROGRAMM [ARGUMENTE...]--target PID: Prozess-ID des Zielprozesses--mount: Mount-Namespace--uts: UTS-Namespace--ipc: IPC-Namespace--net: Netzwerk-Namespace--pid: PID-Namespace--user: Benutzer-Namespacelsnslsns listet alle Namespaces auf dem System auf und zeigt
Informationen über sie an.
lsns [OPTIONEN]-t TYPE: Typ des Namespaces (mnt, net, pid, user, uts,
ipc)-p PID: Prozess-ID zur Filterungsetnssetns verbindet einen Prozess mit einem bestehenden
Namespace.
setns FD TYPEFD: Dateideskriptor, der den Namespace
repräsentiertTYPE: Typ des Namespaces (mount, uts, ipc, net, pid,
user)joinnsjoinns ermöglicht das Betreten eines Namespaces durch
einen bestehenden Prozess. Es ist eine Kombination aus
nsenter und setns.
joinns PID [COMMAND]unshare gestarteten
Namespace: Hat isolierten Zugriff auf die Ressourcen innerhalb
dieses Namespaces. Einige Befehle wie nsenter und
setns können verwendet werden, um zwischen Namespaces zu
wechseln oder zusätzliche Isolierung hinzuzufügen.unshare als
Rootsudo unshare -p --fork --mount-proc=/proc /bin/bashStartet eine neue Bash-Shell in einem separaten PID-Namespace mit
einem neuen /proc-Verzeichnis.
nsenter als
Rootsudo nsenter --target 1234 --pid --mount /bin/bashTritt in den PID- und Mount-Namespace des Prozesses mit der PID 1234 ein.
lsns als
normaler BenutzerlsnsListet alle Namespaces auf, die der Benutzer sehen darf.
setns als
Rootsudo 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.