我创建了一个绑定安装,/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