요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
=============================
Namespaces compatibility list
=============================
This document contains the information about the problems user
may have when creating tasks living in different namespaces.
Here's the summary. This matrix shows the known problems, that
occur when tasks share some namespace (the columns) while living
in different other namespaces (the rows):
==== === === === === ==== ===
- UTS IPC VFS PID User Net
==== === === === === ==== ===
UTS X
IPC X 1
VFS X
PID 1 1 X
User 2 2 X
Net X
==== === === === === ==== ===
1. Both the IPC and the PID namespaces provide IDs to address
object inside the kernel. E.g. semaphore with IPCID or
process group with pid.
In both cases, tasks shouldn't try exposing this ID to some
other task living in a different namespace via a shared filesystem
or IPC shmem/message. The fact is that this ID is only valid
within the namespace it was obtained in and may refer to some
other object in another namespace.
2. Intentionally, two equal user IDs in different user namespaces
should not be equal from the VFS point of view. In other
words, user 10 in one user namespace shouldn't have the same
access permissions to files, belonging to user 10 in another
namespace.
The same is true for the IPC namespaces being shared - two users
from different user namespaces should not access the same IPC objects
even having equal UIDs.
But currently this is not so.
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
호환성 행렬 읽기
1-10이 문서는 서로 다른 namespace에 사는 task를 만들 때 사용자가 겪을 수 있는 문제를 정리합니다. 행렬의 열은 task들이 공유하는 namespace이고, 행은 같은 task들이 서로 다르게 사용하는 namespace입니다.
알려진 문제 행렬
11-22| 분리 \ 공유 | UTS | IPC | VFS | PID | User | Net |
|---|---|---|---|---|---|---|
| UTS | X | |||||
| IPC | X | 1 | ||||
| VFS | X | |||||
| PID | 1 | 1 | X | |||
| User | 2 | 2 | X | |||
| Net | X |
`X`는 같은 종류의 namespace 자체 조합이며, `1`과 `2`는 아래 설명의 알려진 문제를 가리킵니다.
문제 1: IPC·PID identifier 노출
23-32IPC namespace와 PID namespace는 각각 kernel object를 가리키는 ID를 제공합니다. 예를 들어 semaphore는 IPCID로, process group은 pid로 주소를 지정합니다.
두 경우 모두 task는 자신이 얻은 ID를 shared filesystem이나 IPC shared memory/message를 통해 다른 namespace의 task에 노출하면 안 됩니다. 그 ID는 획득한 namespace 안에서만 유효하며 다른 namespace에서는 전혀 다른 object를 가리킬 수 있습니다.
문제 2: User namespace UID 격리
33-43의도상 서로 다른 user namespace의 같은 user ID는 VFS 관점에서 같아서는 안 됩니다. 한 user namespace의 user 10이 다른 user namespace의 user 10 소유 파일에 같은 access permission을 가져서는 안 됩니다.
IPC namespace를 공유할 때도 마찬가지입니다. 서로 다른 user namespace의 두 사용자는 UID가 같더라도 같은 IPC object에 접근해서는 안 됩니다. 그러나 이 원문이 설명하는 현재 동작은 아직 그렇게 격리되지 않습니다.
행렬 핵심
compatibility-list.rst:1-43이 행렬은 공유 namespace를 열에, 분리 namespace를 행에 놓고 조합별 알려진 문제를 표시합니다.