Mount 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)
마운트 네임스페이스는 프로세스 그룹이 보는 파일 시스템 마운트 포인트의 격리를 제공하는 리눅스 커널 기능입니다. 각 마운트 네임스페이스는 고유한 파일 시스템 마운트 포인트 집합을 가지며, 하나의 네임스페이스에서 마운트 포인트에 대한 변경 사항은 다른 네임스페이스에 영향을 미치지 않습니다. 이는 서로 다른 마운트 네임스페이스에서 실행되는 프로세스가 파일 시스템 계층에 대한 서로 다른 뷰를 가질 수 있음을 의미합니다.
마운트 네임스페이스는 각 컨테이너가 다른 컨테이너 및 호스트 시스템과 격리된 고유한 파일 시스템 및 구성을 가져야 하는 컨테이너화에서 특히 유용합니다.
새로운 마운트 네임스페이스가 생성되면, 부모 네임스페이스의 마운트 포인트 복사본으로 초기화됩니다. 이는 생성 시 새로운 네임스페이스가 부모와 동일한 파일 시스템 뷰를 공유함을 의미합니다. 그러나 네임스페이스 내의 마운트 포인트에 대한 이후의 변경 사항은 부모 또는 다른 네임스페이스에 영향을 미치지 않습니다.
프로세스가 네임스페이스 내에서 마운트 포인트를 수정할 때, 예를 들어 파일 시스템을 마운트하거나 언마운트할 때, 변경 사항은 해당 네임스페이스에 국한되며 다른 네임스페이스에 영향을 미치지 않습니다. 이는 각 네임스페이스가 고유한 독립적인 파일 시스템 계층을 가질 수 있게 합니다.
프로세스는 setns()
시스템 호출을 사용하여 네임스페이스 간에 이동하거나, CLONE_NEWNS
플래그와 함께 unshare()
또는 clone()
시스템 호출을 사용하여 새로운 네임스페이스를 생성할 수 있습니다. 프로세스가 새로운 네임스페이스로 이동하거나 생성할 때, 해당 네임스페이스와 연결된 마운트 포인트를 사용하기 시작합니다.
파일 디스크립터와 아이노드는 네임스페이스 간에 공유되며, 이는 하나의 네임스페이스에 있는 프로세스가 파일을 가리키는 열린 파일 디스크립터를 가지고 있다면, 해당 파일 디스크립터를 다른 네임스페이스의 프로세스에 전달할 수 있으며, 두 프로세스 모두 동일한 파일에 접근할 수 있음을 의미합니다. 그러나 파일의 경로는 마운트 포인트의 차이로 인해 두 네임스페이스에서 동일하지 않을 수 있습니다.
새로운 인스턴스의 /proc
파일 시스템을 마운트하면 --mount-proc
매개변수를 사용하여 새로운 마운트 네임스페이스가 해당 네임스페이스에 특정한 프로세스 정보에 대한 정확하고 격리된 뷰를 갖도록 보장합니다.
또한, 루트 사용자일 때만 다른 프로세스 네임스페이스에 들어갈 수 있습니다. 그리고 디스크립터가 없으면 다른 네임스페이스에 들어갈 수 없습니다 (예: /proc/self/ns/mnt
).
새로운 마운트는 네임스페이스 내에서만 접근할 수 있기 때문에, 네임스페이스가 그 안에서만 접근할 수 있는 민감한 정보를 포함할 가능성이 있습니다.
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE) GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)