IPC Namespace
Grundinformationen
Ein IPC (Inter-Process Communication) Namespace ist eine Funktion des Linux-Kernels, die Isolation von System V IPC-Objekten wie Nachrichtenwarteschlangen, gemeinsam genutzten Speichersegmenten und Semaphoren bietet. Diese Isolation stellt sicher, dass Prozesse in verschiedenen IPC-Namespaces nicht direkt auf die IPC-Objekte des jeweils anderen zugreifen oder diese ändern können, was eine zusätzliche Sicherheitsebene und Privatsphäre zwischen Prozessgruppen bietet.
So funktioniert es:
Wenn ein neuer IPC-Namespace erstellt wird, beginnt er mit einem vollständig isolierten Satz von System V IPC-Objekten. Das bedeutet, dass Prozesse, die im neuen IPC-Namespace ausgeführt werden, standardmäßig nicht auf die IPC-Objekte in anderen Namespaces oder im Host-System zugreifen oder diese stören können.
IPC-Objekte, die innerhalb eines Namespaces erstellt werden, sind sichtbar und nur für Prozesse innerhalb dieses Namespaces zugänglich. Jedes IPC-Objekt wird durch einen eindeutigen Schlüssel innerhalb seines Namespaces identifiziert. Obwohl der Schlüssel in verschiedenen Namespaces identisch sein kann, sind die Objekte selbst isoliert und können nicht über Namespaces hinweg zugegriffen werden.
Prozesse können zwischen Namespaces mit dem
setns()
Systemaufruf wechseln oder neue Namespaces mit den Systemaufrufenunshare()
oderclone()
unter Verwendung desCLONE_NEWIPC
-Flags erstellen. Wenn ein Prozess in einen neuen Namespace wechselt oder einen erstellt, beginnt er, die mit diesem Namespace verbundenen IPC-Objekte zu verwenden.
Labor:
Erstellen Sie verschiedene Namespaces
CLI
Durch das Einhängen einer neuen Instanz des /proc
-Dateisystems, wenn Sie den Parameter --mount-proc
verwenden, stellen Sie sicher, dass der neue Mount-Namespace eine genaue und isolierte Sicht auf die prozessspezifischen Informationen hat, die für diesen Namespace spezifisch sind.
Docker
Überprüfen, in welchem Namespace sich Ihr Prozess befindet
Finde alle IPC-Namensräume
Betreten Sie einen IPC-Namespace
Auch können Sie nur in einen anderen Prozess-Namespace eintreten, wenn Sie root sind. Und Sie können nicht in einen anderen Namespace eintreten, ohne einen Deskriptor, der darauf verweist (wie /proc/self/ns/net
).
IPC-Objekt erstellen
Referenzen
Last updated