我正在编写一个在线编码 jude 网站,例如 spoj.pl,并且我正在创建一个用于编译和执行该程序的 jail 。我编写了一个脚本,它采用 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 用户永远不能访问任何/home/ubuntu 文件,除了我可以授予执行权限的 input_output/input*txt
最佳答案
I need to invoke scripts.py of /home/ubuntu in the jail with restricted jail user,
你说scripts.py位于/home/ubuntu/online_judge,而不是/Jail。因此,要么将 jail 用户限制为/Jail,要么不限制。如果受限制的 jail 用户应该执行 online_judge/scripts.py,您必须使其可以在/Jail 下的某个位置访问。
The Jail user should never be able to access any of the /home/ubuntu files except input_output/input*txt which i can give then execute permission
硬链接(hard link)可能会有所帮助,例如“ln/home/ubuntu/online_judge/scripts.py/Jail/scripts.py”,现在受限 jail 用户可以通过/Jail/scripts.py访问scripts.py。请务必限制对该文件的写入访问,否则她/他将修改两个“副本”。
关于linux - debootstrap 访问原始根系统 chroot Jail,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18167487/