PID 네임스페이스를 입력하려고 하는데 PID 1이 있는 프로세스를 을(를) 사용하여 CLONE_NEWPID
찾습니다. Invalid argument
오류가 계속 발생합니다.
즉, clone()
및 플래그를 사용하여 CLONE_NEWPID
하위 프로세스를 복제 했습니다. 하위 프로세스에서는 /proc/1/ns/pid
읽기용으로 열고 setns()
위에 열린 설명자를 사용하여 실행을 시도합니다. setns()
실패하고 표시됩니다 Invalid argument
.
전체 프로그램 코드:https://gist.github.com/k-popov/ef87076785d8264ac66f
PID 1의 네임스페이스나 부모의 네임스페이스에 진입하는 것을 방지하는 일부 (보안?) 메커니즘이 있습니까? 사용자 네임스페이스에 대한 메커니즘이 있다는 것을 알고 있지만 PID 1은 어떻습니까?
답변1
이는 보안 기능이며PID 네임스페이스 매뉴얼 페이지.
프로세스는 자유롭게 하위 PID 네임스페이스에 들어갈 수 있지만(예: CLONE_NEWPID와 함께 setns(2) 사용) 다른 방향으로 이동할 수는 없습니다. 즉, 프로세스는 상위 네임스페이스(부모, 조부모 등)에 들어갈 수 없습니다. PID 네임스페이스 변경은 단방향 작업입니다.