다음과 같은 2개의 서로 다른 네임스페이스에 2개의 프로세스를 생성한다고 가정해 보겠습니다.이 LWN 기사.
- 첫 번째는 ns 내부의 UID 0을 ns 외부의 UID 1000에 매핑합니다.
- 두 번째는 ns 내부의 UID 200을 ns 외부의 UID 1000에 매핑합니다.
나는 그것을 시각화하기 위해 다음 다이어그램을 생각해 냈습니다.
질문 1: 이 숫자가 정확합니까?
질문 #2: ps
"User Namespace 2"에서 실행되는 bash 프로세스에서 명령을 실행할 때 UID 200으로 실행되는 "User Namespace 1"의 bash 프로세스가 표시되는 이유는 무엇입니까? 이것이 어떻게 작동하는지에 대한 몇 가지 아이디어가 있지만 어디에도 쓰여진 것을 찾을 수 없으며 이 해결 방법에 대한 정확한 단계를 알고 싶습니다.
답변1
그림 1에 설명된 내용이 확실하지 않아 정확한지 모르겠습니다. 그러나 질문 2를 설명할 수 있습니다. 이것이 질문 1에도 답이 되기를 바랍니다.
"매핑"은 일대일 관계가 있음을 의미합니다. 루트 네임스페이스의 외부 1000을 네임스페이스 1의 내부 0에 매핑하면 이는 두 가지 방식으로 작동합니다. 즉, 내부 0은 외부 1000입니다. 네임스페이스 2의 경우에도 마찬가지입니다. 여기서 외부(루트) 1000은 내부 200입니다(내부 200은 외부 1000입니다).
따라서 네임스페이스 1에서 uid=0으로 프로세스를 시작하면 외부(루트 네임스페이스)의 uid는 1000입니다. 네임스페이스 2 내부를 보면 외부 1000이 내부 200이라는 점을 기억하세요. 그럼 200이군요.
이 정보는 다음에서 찾을 수 있습니다.사용자 네임스페이스 맨페이지,특히사용자 및 그룹 매핑 섹션효과가있다.