바인드 마운트를 만든 /tmp/test
다음 이를 사용하여 chroot 감옥을 설정했습니다. 예를 들어:
mount --bind -o ro /usr/bin/ /tmp/test
chroot /tmp/test /some_executable
이것은 잘 작동하는 것 같습니다. 해당 폴더에 있는 대부분의 실행 파일에 액세스할 수 있으며 감옥 내에서 정상적으로 상호 작용할 수 있습니다. 그러나 마운트된 파일 중 적어도 일부는 빈 실행 파일로 나타납니다. 특히, nvidia 실행 파일 클래스는 내 시스템에 연결된 GPU 장치와 상호 작용하는 데 사용됩니다.
-rwxr-xr-x 1 root root 0 Feb 13 15:16 nvidia-cuda-mps-control*
-rwxr-xr-x 1 root root 0 Feb 13 15:16 nvidia-cuda-mps-server*
-rwxr-xr-x 1 root root 0 Feb 13 15:16 nvidia-debugdump*
-rwxr-xr-x 1 root root 0 Feb 13 15:16 nvidia-persistenced*
-rwxr-xr-x 1 root root 0 Feb 13 15:16 nvidia-smi*
다음 파일 중 하나를 직접 마운트하려고 하면 모든 것이 잘 작동합니다.
touch /tmp/test/nvidia-smi && mount --bind -o ro /usr/bin/nvidia-smi /tmp/test/nvidia-smi
ll /tmp/test/nvidia-smi
-rwxr-xr-x 1 root root 678392 Jul 13 2021 /tmp/test/nvidia-smi*
왜 이런 일이 발생하는지에 대한 아이디어가 있습니까?
편집하다: 마운트 전 파일 시스템에서 nvidia 파일의 모습은 다음과 같습니다.
/tmp# ls -l /usr/bin/nvidia-*
-rwxr-xr-x 1 root root 45824 Jul 13 2021 /usr/bin/nvidia-cuda-mps-control
-rwxr-xr-x 1 root root 14488 Jul 13 2021 /usr/bin/nvidia-cuda-mps-server
-rwxr-xr-x 1 root root 252720 Jul 13 2021 /usr/bin/nvidia-debugdump
-rwxr-xr-x 1 root root 61976 Jul 13 2021 /usr/bin/nvidia-persistenced
-rwxr-xr-x 1 root root 678392 Jul 13 2021 /usr/bin/nvidia-smi
파일 시스템 정보:
df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
overlay overlay 31444972 14551624 16893348 47% /
tmpfs tmpfs 65536 0 65536 0% /dev
tmpfs tmpfs 16176692 0 16176692 0% /sys/fs/cgroup
tmpfs tmpfs 16176692 4 16176688 1% /etc/config
/dev/nvme0n1p1 xfs 31444972 14551624 16893348 47% /etc/hosts
shm tmpfs 65536 0 65536 0% /dev/shm
tmpfs tmpfs 16176692 12 16176680 1% /run/secrets/kubernetes.io/serviceaccount