IPC Namespace
Basic Information
IPC(프로세스 간 통신) 네임스페이스는 메시지 큐, 공유 메모리 세그먼트 및 세마포어와 같은 System V IPC 객체의 격리를 제공하는 Linux 커널 기능입니다. 이 격리는 다른 IPC 네임스페이스에 있는 프로세스가 서로의 IPC 객체에 직접 접근하거나 수정할 수 없도록 하여 프로세스 그룹 간에 추가적인 보안 및 프라이버시 계층을 제공합니다.
How it works:
새로운 IPC 네임스페이스가 생성되면 완전히 격리된 System V IPC 객체 세트로 시작합니다. 이는 새로운 IPC 네임스페이스에서 실행되는 프로세스가 기본적으로 다른 네임스페이스나 호스트 시스템의 IPC 객체에 접근하거나 간섭할 수 없음을 의미합니다.
네임스페이스 내에서 생성된 IPC 객체는 해당 네임스페이스 내의 프로세스만 볼 수 있고 접근할 수 있습니다. 각 IPC 객체는 해당 네임스페이스 내에서 고유한 키로 식별됩니다. 키는 다른 네임스페이스에서 동일할 수 있지만, 객체 자체는 격리되어 있으며 네임스페이스 간에 접근할 수 없습니다.
프로세스는
setns()
시스템 호출을 사용하여 네임스페이스 간에 이동하거나CLONE_NEWIPC
플래그와 함께unshare()
또는clone()
시스템 호출을 사용하여 새로운 네임스페이스를 생성할 수 있습니다. 프로세스가 새로운 네임스페이스로 이동하거나 생성할 때, 해당 네임스페이스와 연결된 IPC 객체를 사용하기 시작합니다.
Lab:
Create different Namespaces
CLI
새로운 인스턴스의 /proc
파일 시스템을 --mount-proc
매개변수를 사용하여 마운트하면, 새로운 마운트 네임스페이스가 해당 네임스페이스에 특정한 프로세스 정보에 대한 정확하고 격리된 뷰를 갖도록 보장합니다.
Docker
프로세스가 어떤 네임스페이스에 있는지 확인하기
모든 IPC 네임스페이스 찾기
IPC 네임스페이스 내부로 들어가기
또한, 루트일 경우에만 다른 프로세스 네임스페이스에 들어갈 수 있습니다. 그리고 디스크립터가 그것을 가리키지 않는 한 다른 네임스페이스에 들어갈 수 없습니다 (예: /proc/self/ns/net
).
IPC 객체 생성
References
Last updated