我如何启动可执行文件,使其认为根目录位于自定义路径,而不是实际根目录。我以为可以使用sandbox-exec,但是到目前为止,我还没有找到任何方法。
在类Unix操作系统上使用专用的根目录运行进程的通用术语是chroot
(“更改根目录”的缩写)。
做到这一点的规范方法是这样的:
$ mkdir /tmp/chroot-dir
$ cp /bin/sh /tmp/chroot-dir/
$ chroot /tmp/chroot-dir /sh
假设您已在/ tmp上打开了execute,这将更改根目录,从而使/tmp/chroot-dir
该目录成为该/
进程的新目录,然后/sh
在该目录的上下文中执行。可能chroot
需要您成为root用户。在这种情况下,替代sudo chroot
的chroot
。当您从生成的外壳退出时,一切都会恢复正常。
由于/ bin / sh可能需要一些库,因此特定示例可能会失败,但是它将为您指出其他需要的正确方向。在Linux上,运行ldd /bin/sh
会告诉您还需要哪些其他库。OS X可能具有相似的东西,即使不是相同的东西。非同凡响的软件通常还需要配置文件,设备节点和其他杂乱无章的文件系统视图。
面向消费者的软件通常不费吹灰之力就无法成为chroot,但是服务器软件通常可以以相对较少的努力被哄骗到chroot中,有些甚至附带确切说明的文档。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句