我正在尝试用 C 沙箱化一个实用程序。我按照以下步骤操作:
file,directory, sharpoint
在文件夹下为该实用程序创建沙箱资源/sandbox/myutil
。- 来自“c”代码,称为
chdir("/sandbox/myutil")
,chroot("/")
。 - 确保实用程序可执行文件在 下可用
/sandbox/myutil/bin/util.bin
,并且所有依赖文件在 下可用/sandbox/myutil
。 - 调用实用
bin/util.bin
程序execve("/bin/util.bin",arg, env);
然而,/bin/util.bin
没有按预期执行,进程接收到信号 18 并返回代码 13“EACCESS”。
但是,如果我使用从 shell 执行的命令而不是从 c 代码调用 , 则它可以正常工作chroot()
。chdir()
execve()
chroot /sandbox/myutil /bin/util.bin
我正在使用内核 2.6.17。