NSENTER(1)

BEZEICHNUNG
nsenter - Programme in anderen Namensräumen ausführen

ÜBERSICHT

nsenter [Optionen] [Programm [Argumente]]

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).

Um einen neuen Namensraum zu erstellen, verwenden Sie unshare(1). Nach der Erstellung können Sieein Programm darin mit nsenter ausführen.

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]) außer Kraft gesetzt 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(2) wiederzuerlangen. Siehe dessen Handbuchseite für weitere Details.

-t, --target PID[:Inode]
    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

    Optional kann ein Prozess im Format PID:Inode adressiert werden. Inode identifiziert hierbei den eindeutigen Dateideskriptor des Prozesses. Um die Inode-Nummer eines Prozesses abzurufen, kann das Dienstprogramm getino(1) verwendet werden.

-m, --mount[=Datei|=:Namensraum-ID]
    wechselt in den Einhänge-Namensraum. Wenn kein Argument angegeben ist, wird in den Einhänge-Namensraum der Zieldatei gewechselt. Wenn eine Datei oder :Namensraum-ID angegeben ist, wird in den Einhänge-Namensraum gemäß der angegebenen Datei oder Namensraum-ID gewechselt.

-u, --uts[=Datei|=:Namensraum-ID]
    wechselt in den UTS-Namensraum. Wenn kein Argument angegeben ist, wird in den UTS-Namensraum des Zielprozesses gewechselt. Wenn eine Datei oder :Namensraum-ID angegeben ist, wird in den durch die Datei oder Namensraum-ID angegebenen UTS-Namensraum gewechselt.

-i, --ipc[=Datei|=:Namensraum-ID]
    wechselt in den IPC-Namensraum. Wenn kein Argument angegeben ist, wird in den IPC-Namensraum des Zielprozesses gewechselt. Wenn eine Datei oder :Namensraum-ID angegeben ist, wird in den durch die Datei oder Namensraum-ID angegebenen IPC-Namensraum gewechselt.

-n, --net[=Datei|=:Namensraum-ID]
    wechselt in den Netzwerk-Namensraum. Wenn kein Argument angegeben ist, wird in den Netzwerk-Namensraum des Zielprozesses gewechselt. Wenn eine Datei oder :Namensraum-ID angegeben ist, wird in den durch die Datei oder Namensraum-ID angegebenen Netzwerk-Namensraum gewechselt.

-N, --net-socket Dateideskriptor
    wechselt in den Netzwerk-Namensraum des Sockets des Zielprozesses. Dafür muss der Zielprozess mit --target angegeben werden. Unterstützt seit Linux 5.6.

-p, --pid[=Datei|=:Namensraum-ID]
    wechselt in den PID-Namensraum. Wenn kein Argument angegeben ist, wird in den PID-Namensraum des Zielprozesses gewechselt. Wenn eine Datei oder :Namensraum-ID angegeben ist, wird in den durch die Datei oder Namensraum-ID angegebenen PID-Namensraum gewechselt.

-U, --user[=Datei|=:Namensraum-ID]
    wechselt in den Benutzer-Namensraum. Wenn kein Argument angegeben ist, wird in den Benutzer-Namensraum des Zielprozesses gewechselt. Wenn eine Datei oder :Namensraum-ID angegeben ist, wird in den durch die Datei oder Namensraum-ID angegebenen Benutzer-Namensraum gewechselt. Siehe auch die Optionen --setuid und --setgid.

--user-parent
    wechselt in den übergeordneten Benutzernamensraum. Der übergeordnete Benutzernamensraum wird aus jedem anderen aktivierten Benutzernamensraum abgerufen. In Kombination mit der Option --user wird der übergeordnete Benutzernamensraum aus dem Benutzernamensraum abgerufen und ersetzt.

-C, --cgroup[=Datei|=:Namensraum-ID]
    wechselt in den Cgroup-Namensraum. Wenn kein Argument angegeben ist, wird in den Cgroup-Namensraum des Zielprozesses gewechselt. Wenn eine Datei oder :Namensraum-ID angegeben ist, wird in den durch die Datei oder Namensraum-ID angegebenen Cgroup-Namensraum gewechselt.

-T, --time[=Datei|=:Namensraum-ID]
    wechselt in den Zeit-Namensraum. Wenn kein Argument angegeben ist, wird in den Zeit-Namensraum des Zielprozesses gewechselt. Wenn eine Datei oder :Namensraum-ID angegeben ist, wird in den durch die Datei oder Namensraum-ID angegebenen Zeit-Namensraum 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 wird 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.

ANMERKUNGEN

Die Option --user-parent erfordert Linux 4.9 oder höher. Ältere Kernel lösen einen unangemessenen Ioctl-Fehler für das Gerät aus.

Die Angabe von Namensräumen per Namensraum-ID erfordert Linux 6.19 oder neuer. Falls der Name einer Namensraum-Datei mit einem Doppelpunkt beginnt, stellen Sie zwecks Eindeutigkeit ./ voran.

AUTOREN

SIEHE AUCH

unshare(1), lsns(8), clone(2), setns(2), namespaces(7) getino(1)

FEHLER MELDEN

Nutzen Sie zum Melden von Fehlern das

VERFÜGBARKEIT

Der Befehl nsenter ist Teil des Pakets util-linux, welches aus dem heruntergeladen werden kann.