debootstrap访问原始根系统chroot jail

时间:2013-08-11 00:00:57

标签: linux security ubuntu chroot jail

我正在写一个像spoj.pl这样的在线编码jude网站,我正在创建一个用于编译和执行程序的监狱。我写了一个脚本,它接受c / c ++源代码,编译并运行代码。我需要在debootstrap创建的jail中执行此程序,但我必须限制对我的脚本的权限,并允许二进制文件只读取原始/ home / ubuntu系统中存在的 - 输入/输出文件。

有可能吗?

Linux system:
/home/ubuntu:
   This folder has 
   online_judge/scripts.py ...
   input_output/input*.txt,output*.txt

/Jail 
    submissions/code.c
    submissions/code.cpp

我需要在jail中使用受限制的jail用户调用/ home / ubuntu的scripts.py,编译代码并运行二进制文件。 Jail用户永远不能访问除了input_output / input * txt之外的任何/ home / ubuntu文件,我可以给它执行权限

2 个答案:

答案 0 :(得分:0)

  

我需要在jail中使用受限制的jail用户调用/ home / ubuntu的scripts.py,

你说scripts.py位于/ home / ubuntu / online_judge,它不在/ Jail中。所以,要么你的jail用户被限制为/ Jail。如果受限制的jail用户应该执行online_judge / scripts.py,则必须在/ Jail下的某个地方访问它。

  

Jail用户永远不能访问任何/ home / ubuntu文件,除了   input_output / input * txt我可以给出然后执行权限

硬链接可能有所帮助,例如“ln /home/ubuntu/online_judge/scripts.py /Jail/scripts.py”,现在受限制的jail用户可以通过/Jail/scripts.py访问scripts.py。请务必限制对该文件的写访问权限,否则他/她将修改两个“副本”。

答案 1 :(得分:0)

您需要使用debootstrap,您可以下载必要的编译工具链。所以不要尝试使用debootstrap提供的工具链中的现有系统工具链,也可以通过apt-get从jail里面下载工具链。如果全部失败,那么尝试使用scratchbox(www.scratchbox.org),它包含您还需要执行环境的所有编译工具链。希望它会有所帮助!