![创建绑定挂载后清空可执行文件](https://linux22.com/image/202404/%E5%88%9B%E5%BB%BA%E7%BB%91%E5%AE%9A%E6%8C%82%E8%BD%BD%E5%90%8E%E6%B8%85%E7%A9%BA%E5%8F%AF%E6%89%A7%E8%A1%8C%E6%96%87%E4%BB%B6.png)
我创建了一个绑定安装,/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