Mount Namespace
기본 정보
마운트 네임스페이스는 Linux 커널 기능으로, 일련의 프로세스 그룹이 볼 수 있는 파일 시스템 마운트 지점을 격리하는 기능을 제공합니다. 각 마운트 네임스페이스는 고유한 파일 시스템 마운트 지점을 가지며, 하나의 네임스페이스에서 마운트 지점을 변경하더라도 다른 네임스페이스에는 영향을 주지 않습니다. 이는 서로 다른 마운트 네임스페이스에서 실행되는 프로세스가 파일 시스템 계층 구조에 대해 다른 뷰를 가질 수 있음을 의미합니다.
마운트 네임스페이스는 컨테이너화에서 특히 유용하며, 각 컨테이너는 다른 컨테이너 및 호스트 시스템과 격리된 고유한 파일 시스템과 구성을 가져야 합니다.
작동 방식:
새로운 마운트 네임스페이스가 생성되면, 부모 네임스페이스의 마운트 지점 복사본으로 초기화됩니다. 이는 새로운 네임스페이스가 생성될 때, 새로운 네임스페이스가 부모와 동일한 파일 시스템 뷰를 공유한다는 것을 의미합니다. 그러나 네임스페이스 내에서 마운트 지점에 대한 이후 변경 사항은 부모나 다른 네임스페이스에 영향을 주지 않습니다.
프로세스가 자신의 네임스페이스 내에서 마운트 지점을 수정할 때(예: 파일 시스템 마운트 또는 언마운트), 해당 네임스페이스에 대한 변경 사항은 해당 네임스페이스에만 적용되며 다른 네임스페이스에는 영향을 주지 않습니다. 이를 통해 각 네임스페이스가 독립적인 파일 시스템 계층 구조를 가질 수 있습니다.
프로세스는
setns()
시스템 호출을 사용하여 네임스페이스 간 이동하거나unshare()
또는clone()
시스템 호출을 사용하여CLONE_NEWNS
플래그와 함께 새로운 네임스페이스를 생성할 수 있습니다. 프로세스가 새로운 네임스페이스로 이동하거나 생성할 때, 해당 네임스페이스와 관련된 마운트 지점을 사용하기 시작합니다.파일 디스크립터와 inode는 네임스페이스 간에 공유됩니다. 즉, 하나의 네임스페이스에서 실행 중인 프로세스가 파일을 가리키는 열린 파일 디스크립터를 가지고 있다면, 해당 파일 디스크립터를 다른 네임스페이스의 프로세스에게 전달할 수 있으며, 두 프로세스는 동일한 파일에 접근할 수 있습니다. 그러나 마운트 지점의 차이로 인해 파일의 경로는 두 네임스페이스에서 동일하지 않을 수 있습니다.
Lab:
다른 네임스페이스 생성
CLI
--mount-proc
매개변수를 사용하여 /proc
파일 시스템의 새로운 인스턴스를 마운트함으로써, 새로운 마운트 네임스페이스가 해당 네임스페이스에 특정한 프로세스 정보의 정확하고 격리된 뷰를 가지도록 보장합니다.
Docker
현재 프로세스가 속한 네임스페이스 확인
To check which namespace your process is in, you can use the lsns
command. This command lists all the namespaces on the system along with the processes associated with each namespace.
네임스페이스 확인을 위해 lsns
명령어를 사용할 수 있습니다. 이 명령어는 시스템에 있는 모든 네임스페이스와 각 네임스페이스에 연결된 프로세스를 나열합니다.
The output will display information about each namespace, including the namespace ID, type, and the number of processes associated with it. Look for the process ID (PID) of your process in the output to determine which namespace it belongs to.
출력에는 각 네임스페이스에 대한 정보가 표시되며, 네임스페이스 ID, 유형 및 해당 네임스페이스와 연결된 프로세스 수 등이 포함됩니다. 프로세스 ID (PID)를 찾아 해당 프로세스가 속한 네임스페이스를 확인할 수 있습니다.
모든 마운트 네임스페이스 찾기
```bash nsenter -m TARGET_PID --pid /bin/bash ``` 또한, 루트 권한이 있어야만 다른 프로세스 네임스페이스로 진입할 수 있습니다. 그리고 `/proc/self/ns/mnt`와 같은 디스크립터가 가리키는 다른 네임스페이스로 진입할 수 없습니다.
새로운 마운트는 해당 네임스페이스 내에서만 접근 가능하기 때문에, 네임스페이스에는 해당 네임스페이스에서만 접근 가능한 민감한 정보가 포함될 수 있습니다.
무언가를 마운트하기
참고 자료
Last updated