IPC Namespace
基本信息
IPC(进程间通信)命名空间是 Linux 内核的一项功能,提供 隔离 System V IPC 对象,如消息队列、共享内存段和信号量。此隔离确保 不同 IPC 命名空间中的进程无法直接访问或修改彼此的 IPC 对象,为进程组之间提供额外的安全性和隐私保护。
工作原理:
当创建一个新的 IPC 命名空间时,它会以 完全隔离的 System V IPC 对象集 开始。这意味着在新的 IPC 命名空间中运行的进程默认无法访问或干扰其他命名空间或主机系统中的 IPC 对象。
在命名空间内创建的 IPC 对象仅对 该命名空间内的进程可见和可访问。每个 IPC 对象在其命名空间内由唯一的键标识。尽管在不同命名空间中键可能相同,但对象本身是隔离的,无法跨命名空间访问。
进程可以使用
setns()
系统调用在命名空间之间移动,或使用带有CLONE_NEWIPC
标志的unshare()
或clone()
系统调用创建新命名空间。当进程移动到新命名空间或创建一个时,它将开始使用与该命名空间关联的 IPC 对象。
实验:
创建不同的命名空间
CLI
通过挂载新的 /proc
文件系统实例,如果使用参数 --mount-proc
,您可以确保新的挂载命名空间具有 特定于该命名空间的进程信息的准确和隔离视图。
Docker
检查您的进程所在的命名空间
查找所有 IPC 命名空间
进入 IPC 命名空间
此外,您只能以 root 身份进入另一个进程命名空间。并且您不能在没有指向它的描述符的情况下进入其他命名空间(例如 /proc/self/ns/net
)。
创建 IPC 对象
参考文献
Last updated