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.
unshare
unshare
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-Namespacensenter
nsenter
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-Namespacelsns
lsns
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 Filterungsetns
setns
verbindet einen Prozess mit einem bestehenden
Namespace.
setns FD TYPE
FD
: Dateideskriptor, der den Namespace
repräsentiertTYPE
: Typ des Namespaces (mount, uts, ipc, net, pid,
user)joinns
joinns
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/bash
Startet eine neue Bash-Shell in einem separaten PID-Namespace mit
einem neuen /proc
-Verzeichnis.
nsenter
als
Rootsudo nsenter --target 1234 --pid --mount /bin/bash
Tritt in den PID- und Mount-Namespace des Prozesses mit der PID 1234 ein.
lsns
als
normaler Benutzerlsns
Listet 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.