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).
Netz-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
file. 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 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
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
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 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
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 Datei angegeben ist, wird in den Benutzer-Namensraum der
angegebenen Datei gewechselt. Siehe auch die Optionen --setuid
und --setgid.
-C, --cgroup[=Datei]
wechselt in den Cgroup-Namensraum. Wenn keine Datei
angegeben ist, wird in den Cgroup-Namensraum der Zieldatei gewechselt. Wenn
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 der Zieldatei 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 setzt stets die
GID für Benutzer-Namensräume, die Voreinstellung ist 0.
-S, --setuid UID
legt die Benutzerkennung fest, die in dem
Benutzer-Namensraum verwendet wird, in den gewechselt werden soll.
nsenter setzt stets die UID für Benutzer-Namensräume, die
Voreinstellung ist 0.
--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.
-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 verwandt wird. (Util-Linux muss mit
SELinux-Unterstützung übersetzt worden sein, damit diese Option
zur Verfügung steht.)
-h, --help
zeigt einen Hilfetext an und beendet das Programm.
-V, --version
zeigt die Versionsnummer an und beendet das
Programm.