BESCHREIBUNG¶
Der Befehl nsenter führt das angegebene
Programm im Namensraum oder den Namensräumen aus, der
oder die in den Befehlszeilenoptionen angegeben sind (nachfolgend
beschrieben). Falls kein Programm angegeben ist, dann wird
»${SHELL}« ausgeführt (Vorgabe: /bin/sh).
Wechselfähige Namensräume sind:
Einhänge-Namensraum
Ein- und Aushängen eines Dateisystems wirkt sich
nicht auf das übrige System aus, außer für Dateisysteme,
die ausdrücklich als Mehrfacheinhängungen markiert sind (mit
mount --make-shared; siehe
/proc/self/mountinfo für den
Schalter
shared). Für weitere Details siehe
mount_namespaces(7) und die Diskussion des Schalters
CLONE_NEWNS
in
clone(2).
UTS-Namensraum
Setzen des Rechner- oder Domain-Namens wird den Rest des
Systems nicht betreffen. Für weitere Details siehe
uts_namespaces(7).
IPC-Namensraum
Der Prozess erhält einen unabhängigen
Namensraum für POSIX-Meldungswarteschlangen sowie
System-V-Meldungswarteschlangen, Semaphor-Gruppen und gemeinsam genutzte
Speichersegmente. Für weitere Details siehe
ipc_namespaces(7).
Netzwerk-Namensraum
Der Prozess erhält unabhängige IPv4- und
IPv6-Stapel, IP-Routing-Tabellen, Firewall-Regeln, die Verzeichnisbäume
/proc/net und
/sys/class/net, Sockets usw. Für weitere
Details siehe
network_namespaces(7).
PID-Namensraum
Kindprozesse erhalten einen eigenen Satz an
PID-auf-Prozess-Abbildungen separat vom
nsenter−Prozess.
nsenter ruft standardmäßig »fork« auf, wenn
in den PID-Namensraum gewechselt wird, so dass das neue Programm und dessen
Kinder einen gemeinsamen Namensraum haben und füreinander sichtbar
sind. Wenn
--no-fork verwendet wird, wird das neue Programm ohne
vorheriges Forken ausgeführt. Für weitere Details, siehe
pid_namespaces(7).
Benutzer-Namensraum
Der Prozess wird über eine eindeutige Gruppe an
UIDs, GIDS und Capabilities verfügen. Für weitere Details siehe
user_namespaces(7).
Cgroup-Namensraum
Der Prozess wird über einen virtualisierten Blick
auf
/proc/self/cgroup verfügen und neue
Cgroup-Einhängungen werden ihre Wurzel in der Wurzel der
Cgroup-Namensraum-Wurzel haben. Für weitere Details siehe
cgroup_namespaces(7).
Zeit-Namensraum
Der Prozess kann eine abweichende Sicht auf
CLOCK_MONOTONIC und/oder
CLOCK_BOOTTIME haben, was mittels
/proc/self/timens_offsets geändert werden kann. Für
weitere Details, siehe
time_namespaces(7).
OPTIONEN¶
Verschiedene der unten beschriebenen Optionen, die sich auf
Namensräume beziehen, akzeptieren ein optionales Argument
Datei. Dies sollte eine aus den in namespaces(7) beschriebenen
Dateien unter /proc/[PID]/ns/ oder der Pfadname einer
Bind-Einhängung, die auf einer dieser Dateien erstellt wurde,
sein.
-a, --all
Wechselt in alle Namensräume des Zielprozesses
mittels der Vorgabe-Namensräumepfade
/proc/[PID]/ns/*. Die
Vorgabepfade zum Zielprozessnamensraum können mittels
namensraumspezifischer Optionen (z.B.
--all --mount=[
Pfad])
überschrieben werden.
Die Benutzer-Namensräume werden ignoriert, falls sie mit
dem Namensraum des aktuell Aufrufenden identisch sind. Es verhindert einen
Aufrufenden, der Capabilities abgegeben hat, diese Capabilities mit einem
Aufruf von setns() wiederzuerlangen. Siehe setns(2) für
weitere Details.
-t, --target PID
gibt einen Zielprozess an, aus dem die Kontexte ermittelt
werden sollen. Die Pfade der durch die
PID anzugebenden Kontexte sind:
/proc/pid/ns/mnt
der Einhänge-Namensraum
/proc/pid/ns/uts
der UTS-Namensraum
/proc/pid/ns/ipc
der IPC-Namensraum
/proc/pid/ns/net
der Netzwerk-Namensraum
/proc/pid/ns/pid
der PID-Namensraum
/proc/pid/ns/user
der Benutzer-Namensraum
/proc/pid/ns/cgroup
der Cgroup-Namensraum
/proc/pid/ns/time
der Zeit-Namensraum
/proc/pid/root
das Wurzelverzeichnis
/proc/pid/cwd
das Arbeitsverzeichnis
-m, --mount[=Datei]
wechselt in den Einhänge-Namensraum. Wenn keine
Datei angegeben ist, wird in den Einhänge-Namensraum der
Zieldatei gewechselt. Wenn eine Datei angegeben ist, wird in den
Einhänge-Namensraum der angegebenen Datei gewechselt.
-u, --uts[=Datei]
wechselt in den UTS-Namensraum. Wenn keine Datei
angegeben ist, wird in den UTS-Namensraum des Zielprozesses gewechselt. Wenn
eine Datei angegeben ist, wird in den UTS-Namensraum der angegebenen
Datei gewechselt.
-i, --ipc[=Datei]
wechselt in den IPC-Namensraum. Wenn keine Datei
angegeben ist, wird in den IPC-Namensraum des Zielprozesses gewechselt. Wenn
eine Datei angegeben ist, wird in den IPC-Namensraum der angegebenen
Datei gewechselt.
-n, --net[=Datei]
wechselt in den Netzwerk-Namensraum. Wenn keine
Datei angegeben ist, wird in den Netzwerk-Namensraum des Zielprozesses
gewechselt. Wenn eine Datei angegeben ist, wird in den
Netzwerk-Namensraum der angegebenen Datei gewechselt.
-p, --pid[=Datei]
wechselt in den PID-Namensraum. Wenn keine Datei
angegeben ist, wird in den PID-Namensraum des Zielprozesses gewechselt. Wenn
eine Datei angegeben ist, wird in den PID-Namensraum der angegebenen
Datei gewechselt.
-U, --user[=Datei]
wechselt in den Benutzer-Namensraum. Wenn keine
Datei angegeben ist, wird in den Benutzer-Namensraum des Zielprozesses
gewechselt. Wenn eine Datei angegeben ist, wird in den
Benutzer-Namensraum der angegebenen Datei gewechselt.
--user-parent
Enter the parent user namespace. Parent user namespace
will be acquired from any other enabled namespace. If combined with
--user option the parent user namespace will be fetched from the user
namespace and replace it.
-C, --cgroup[=Datei]
wechselt in den Cgroup-Namensraum. Wenn keine
Datei angegeben ist, wird in den Cgroup-Namensraum des Zielprozesses
gewechselt. Wenn eine Datei angegeben ist, wird in den
Cgroup-Namensraum der angegebenen Datei gewechselt.
-T, --time[=Datei]
wechselt in den Zeit-Namensraum. Wenn keine Datei
angegeben ist, wird in den Zeit-Namensraum des Zielprozesses gewechselt. Wenn
eine Datei angegeben ist, wird in den Zeit-Namensraum der angegebenen
Datei gewechselt.
-G, --setgid GID
legt die Gruppenkennung fest, die in dem
Benutzer-Namensraum verwendet wird, in den gewechselt werden soll und
überspringt zusätzliche Gruppen.
nsenter(1) setzt stets
die GID für Benutzer-Namensräume, die Voreinstellung ist 0.
Falls das Argument »follow« angegeben ist, wird die
Gruppenkennung des Zielprozesses verwendet.
-S, --setuid UID
legt die Benutzerkennung fest, die in dem
Benutzer-Namensraum verwendet wird, in den gewechselt werden soll.
nsenter(1) setzt stets die UID für Benutzer-Namensräume,
die Voreinstellung ist 0. Falls das Argument »follow« angegeben
ist, wird die Benutzerkennung des Zielprozesses verwendet.
--keep-caps
stellt bei übergebener Option --user
sicher, dass die im Benutzernamensraum gewährten Capabilities im
Kindprozess erhalten bleiben.
--preserve-credentials
lässt die UID und GID unverändert, wenn in
den Benutzer-Namensraum gewechselt wird. In der Voreinstellung werden
zusätzliche Gruppen übersprungen und die GID und UID auf 0
gesetzt.
-r, --root[=Verzeichnis]
legt das Wurzelverzeichnis fest. Wenn kein Verzeichnis
angegeben ist, wird in das Wurzelverzeichnis des Zielprozesses gewechselt.
Wenn ein Verzeichnis angegeben ist, wird es zum neuen Wurzelverzeichnis. Das
angegebene Verzeichnis ist geöffnet, bevor es in die angegebenen
Namensräume wechselt.
-w, --wd[=Verzeichnis]
legt das Arbeitsverzeichnis fest. Wenn kein Verzeichnis
angegeben ist, wird in das Arbeitsverzeichnis des Zielprozesses gewechselt.
Wenn ein Verzeichnis angegeben ist, wird es zum neuen Arbeitsverzeichnis. Das
angegebene Verzeichnis ist geöffnet, bevor es in die angegebenen
Namensräume wechselt, was bedeutet, dass das angegebene Verzeichnis als
»Tunnel« zum aktuellen Namensraum fungiert. Siehe auch
--wdns.
-W, --wdns[=Verzeichnis]
legt das Arbeitsverzeichnis fest. Das
Verzeichnis
ist nach dem Wechsel in die angeforderten Namensräume und nach dem
chroot(2)-Aufruf geöffnet. Die Optionen
--wd und
--wdns schließen sich gegenseitig aus.
-e, --env
übergibt die Umgebungsvariablen des Zielprozesses
an den neu zu erzeugenden Prozess. Falls diese Option nicht angegeben ist,
bleiben die Umgebungsvariablen die gleichen wie im aktuellen Namensraum.
-F, --no-fork
veranlasst, dass »fork« vor dem
Ausführen des angegebenen Programms nicht aufgerufen wird. In der
Voreinstellung wird fork durch nsenter beim Wechsel in den
PID-Namensraum aufgerufen, so dass sich die jeweiligen Kindprozesse auch im
neuen PID-Namensraum befinden.
-Z, --follow-context
setzt den SELinux-Kontext, der für die
Ausführung eines neuen Prozesses entsprechend des bereits durch
--target PID angegebenen Prozesses verwendet wird (Util−Linux
muss mit SELinux-Unterstützung kompiliert worden sein, damit diese
Option zur Verfügung steht).
-c, --join-cgroup
fügt den initiierten Prozess zur Cgroup des
Zielprozesses hinzu.
-h, --help
zeigt einen Hilfetext an und beendet das Programm.
-V, --version
zeigt Versionsinformationen an und beendet das
Programm.