有没有办法将linux进程沙箱放入某个目录,为此进程提供独占的rw访问权限?例如,创建一个临时工作目录,然后启动,例如python或其他脚本工具,它只能在这个目录中写入,而不会限制其太多的功能。而且 only 此进程可以访问此目录的读取(当然超级用户除外)。
我需要这个来沙箱化一个基本上允许用户运行任意代码的Web服务。我们目前在软件本身进行授权,但最终所有进程都作为同一个linux用户运行。我们需要一种方法,用户不会对系统造成任何伤害,但是有一个临时的私人工作目录来编写和读取受到web服务其他用户保护的文件。
答案 0 :(得分:0)
哇,这听起来几乎是神奇的。几乎没有编程问题。以这种方式只能写 在这个目录中,没有限制 太多的功能。
答案 1 :(得分:0)
听起来你想要像FreeBSD Jail的Linux等价物,或者至少有类似的东西。此blog posting包含至少具有相同名称的工具的说明。
答案 2 :(得分:0)
文件权限基于所有者/组不进程,因此同一用户运行的多个程序将能够访问拥有的目录。但是,如果在运行之前为每个进程创建一个临时目录,然后chroot(),那么任何进程都不能离开其chroot jail来访问其他目录。
基本概念是,就进程而言,temp目录成为目录树的顶部。这个过程不知道,也不能改变它上面的任何东西。否则,它可以读/写创建/删除其沙箱中的内容。
例如:
/rundir
/rundir/temp1 <-- process 1 chroot jailed here, can't go above
/rundir/temp2 <-- process 2 chroot jailed here, can't go above
另见“man 8 chroot”。
答案 3 :(得分:0)
你可以使用像Grsecurity这样的内核补丁(还有其他人可以完成这项工作,我认为,寻找SELinux和AppArmor)来为某个进程强制执行RBAC(基于角色的访问控制)。
根据您的使用场景,我认为使用安全增强内核是必须的。