/proc는 PID 네임스페이스와 어떻게 상호 작용합니까?

/proc는 PID 네임스페이스와 어떻게 상호 작용합니까?

네임스페이스가 그것과 어떻게 관련되는지 이해가 되지 않습니다 . 반환 값은 쿼리 프로세스를 기반으로 한다고 /proc가정합니다 ./proc

예를 들어 전역 PID 네임스페이스 내에서 현재 프로세스의 PID를 결정해 보겠습니다.

$ bwrap --bind / / readlink /proc/self
6182

이것은 나에게 의미가 있습니다. 그러나 readlink이를 자체 PID 네임스페이스로 격리 하면 다음과 같습니다 .

$ bwrap --bind / / --unshare-pid readlink /proc/self
6177

나는 같은 결과를 얻습니다! 네임스페이스 내에서 PID를 얻으려면 다음을 추가해야 합니다 --proc /proc.

$ bwrap --bind / / --unshare-pid --proc /proc readlink /proc/self
2

/proc하지만 독서 과정의 맥락을 항상 고려해야 하지 않을까요 ? 추가 콘텐츠가 필요한 이유는 무엇이며 procfs프로세스와 어떤 관련이 있습니까 readlink?

새 PID 네임스페이스를 만들지 않으면 추가 콘텐츠는 procfs아무런 차이가 없습니다.

$ bwrap --bind / / --proc /proc readlink /proc/self
6179

답변1

이것이 네임스페이스의 문제 중 하나입니다. 그리고

bwrap --bind / / --unshare-pid readlink /proc/self

새 PID 네임스페이스와 새 마운트 네임스페이스를 생성했지만( bwrap기본적으로 이것이 수행되기 때문에) /해당 마운트 네임스페이스에 외부 바인딩을 명시적으로 마운트합니다. 결과적으로 새 마운트 네임스페이스 내부는 /proc외부와 동일합니다.

bwrap --bind / / --unshare-pid ps -ef

주요 기능은 여기에 설명되어 있습니다.존재하다man pid_namespaces:

파일 시스템 /proc(디렉토리에 있음)은 /proc/[pid]프로세스의 PID 네임스페이스에 표시되는 프로세스 만 표시합니다.설치 수행, /proc다른 네임스페이스의 프로세스에서 파일 시스템을 보는 경우에도 마찬가지입니다.

(강조). 너는 볼 수있어/proc여기서 적절한 PID 네임스페이스를 기억하세요..

readlink따라서 실행은 자체 PID 네임스페이스를 통하지 않고 mount 의 PID 네임스페이스를 통해 표시됩니다 ./proc

새 PID 네임스페이스의 포크 내에 마운트를 다시 추가하여 --proc=/proc해당 콘텐츠가 새 PID 네임스페이스를 반영하도록 합니다./procbwrap

관련 정보