CGroup Namespace
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
cgroup 네임스페이스는 네임스페이스 내에서 실행되는 프로세스에 대한 cgroup 계층의 격리를 제공하는 리눅스 커널 기능입니다. cgroups는 제어 그룹의 약자로, CPU, 메모리 및 I/O와 같은 **시스템 리소스에 대한 제한을 관리하고 시행하기 위해 프로세스를 계층적 그룹으로 조직할 수 있게 해주는 커널 기능입니다.
cgroup 네임스페이스는 우리가 앞서 논의한 다른 네임스페이스 유형(PID, mount, network 등)과는 별개의 네임스페이스 유형이 아니지만, 네임스페이스 격리 개념과 관련이 있습니다. cgroup 네임스페이스는 cgroup 계층의 뷰를 가상화하여, cgroup 네임스페이스 내에서 실행되는 프로세스가 호스트 또는 다른 네임스페이스에서 실행되는 프로세스와 비교하여 계층의 다른 뷰를 가지게 됩니다.
새로운 cgroup 네임스페이스가 생성되면, 생성 프로세스의 cgroup을 기반으로 한 cgroup 계층의 뷰로 시작합니다. 이는 새로운 cgroup 네임스페이스 내에서 실행되는 프로세스가 전체 cgroup 계층의 하위 집합만 볼 수 있음을 의미하며, 이는 생성 프로세스의 cgroup에 뿌리를 둔 cgroup 서브트리로 제한됩니다.
cgroup 네임스페이스 내의 프로세스는 자신의 cgroup을 계층의 루트로 봅니다. 이는 네임스페이스 내의 프로세스 관점에서 자신의 cgroup이 루트처럼 보이며, 자신의 서브트리 외부의 cgroup을 볼 수 없거나 접근할 수 없음을 의미합니다.
cgroup 네임스페이스는 리소스의 격리를 직접 제공하지 않습니다; 그들은 단지 cgroup 계층 뷰의 격리만 제공합니다. 리소스 제어 및 격리는 여전히 cgroup 서브시스템(예: cpu, memory 등) 자체에 의해 시행됩니다.
CGroups에 대한 더 많은 정보는 다음을 확인하세요:
/proc
파일 시스템의 새 인스턴스를 마운트하면 --mount-proc
매개변수를 사용하여 새 마운트 네임스페이스가 해당 네임스페이스에 특정한 프로세스 정보에 대한 정확하고 격리된 뷰를 갖도록 보장합니다.
또한, 루트일 경우에만 다른 프로세스 네임스페이스에 들어갈 수 있습니다. 그리고 디스크립터가 없으면 다른 네임스페이스에 들어갈 수 없습니다(예: /proc/self/ns/cgroup
).
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)