명령에 필요한 기능을 어떻게 결정합니까?

명령에 필요한 기능을 어떻게 결정합니까?

Docker 컨테이너에서 명령을 실행하면 다음이 표시됩니다.

# ip netns exec 9ee961d90990 ifconfig
setting the network namespace "9ee961d90990" failed: Operation not permitted

이미 추가한 확장 기능을 사용하여 컨테이너를 직접 시작할 수 있지만 net_admin이 명령을 실행하는 데 필요한 시스템 기능을 확인할 수 있는 방법이 있습니까?

이를 수행하기 위해 컨테이너를 시작하고 docker와 관련된 모든 보안을 짓밟는 것이 가능 --privileged하지만 가능하다면 그렇게 하지 않는 것이 좋습니다. 이렇게 하면 위 명령이 성공합니다.

답변1

~에 따르면setns(2) 매뉴얼 페이지CAP_SYS_ADMIN대상 네트워크 네임스페이스에 가입 해야 합니다 . 그러나 setns()파일 설명자를 사용하여 작업한 이후에는 추가 기능이 필요할 수 있습니다 /run/netns/.... 이 네트워크 네임스페이스를 어떻게 생성했는지 알려주지 않았으므로 다음을 통해 생성된 것으로 가정합니다. ip netns add ...따라서 바인드 마운트된 네트워크 네임스페이스는 다음을 가리킵니다.nsfs(네임스페이스 파일 시스템) 어쨌든.

이는 일반적 으로 /run/netns/...루트 영역이므로 CAP_DAC_OVERRIDE또는 이 필요할 수도 있습니다 CAP_DAC_READ_SEARCH.Function(7) 매뉴얼 페이지. 또한 ptrace 기능으로 인해 CAP_SYS_PTRACE많은 inode에 대한 액세스가 더욱 제한 될 수도 있습니다 ./proc

관련 정보