当我绑定文件系统根目录时它有效
~> bwrap --ro-bind / / -- which which
/usr/bin/which
然而当我绑定非root时它失败了
~> bwrap --ro-bind /usr /usr -- which which
bwrap: execvp which: No such file or directory
尽管/usr/bin/which
是在/usr
。
为什么会失败?
答案1
您没有绑定解释器对于该二进制文件 –/lib/ld-linux.so.2
或/lib64/ld-linux-x86-64.so.2
类似。(内核本身实际上并不理解动态链接的二进制文件,而是在 ELF 标头中指定加载器。它的工作原理与脚本的 #! 行非常相似。)
即使在合并了 /usr 的系统上,此文件通常仍在 /lib 中。(并且在系统上没有合并的 /usr,许多其他所需库(例如 libc.so)也在 /lib 中。