标签: chroot

Python:使用chroot和chjail保护不受信任的脚本/子进程?

我正在编写一个基于Python的Web服务器,它应该能够执行"插件",以便可以轻松扩展功能.

为此,我考虑了有多个文件夹(每个插件一个)和一些shell/python脚本的方法,这些脚本以可能发生的不同事件的预定义名称命名.

一个示例是具有on_pdf_uploaded.py在将PDF上载到服务器时执行的文件.为此,我将使用Python的子流程工具.

为了方便和安全,这将允许我使用Unix环境变量来提供进一步的信息并设置进程的工作目录(cwd),以便它可以访问正确的文件而无需找到它们的位置.

由于插件代码来自不受信任的来源,我希望尽可能安全.我的想法是在子进程中执行代码,但是将它放入具有不同用户的chroot jail中,这样它就无法访问服务器上的任何其他资源.

不幸的是我找不到任何关于这一点,我不想依赖不受信任的脚本将自己置于监狱.

此外,我也不能将主/调用进程放入chroot jail,因为当服务器回答其他请求时,插件代码可能同时在多个进程中执行.

所以这里有一个问题:如何在chroot jail中执行子进程/脚本,以最小的权限保护服务器的其余部分不被错误的,不可信的代码损坏?

谢谢!

python security subprocess chroot jail

10
推荐指数
2
解决办法
5399
查看次数

是否可以让chroot jails在监狱外共享目录(只读)?

我有多个chroot jails,我希望他们共享一些目录,目前我必须将这些目录复制到我觉得不优雅的jails中.目录是只读的,如'/ usr/bin'.

linux virtualization debian chroot

9
推荐指数
1
解决办法
3239
查看次数

执行 chroot 并在 chroot 中执行命令的 Shell 脚本

如果在shell脚本中我写

chroot /home/mayank/chroot/codebase
cd SBC
Run Code Online (Sandbox Code Playgroud)

当我运行这个 shell 脚本时,它确实进入chroot但不执行命令cd SBC,当我退出时chroot它会执行cd SBC

如何通过 shell 脚本实现某些功能chroot并执行命令chroot

bash shell chroot

9
推荐指数
1
解决办法
1万
查看次数

chroot + execvp + bash

更新

得到它了!看我的解决方案(第五条评论)

这是我的问题:

我创建了一个名为"jail"的小二进制文件,在/ etc/password中我将它作为测试用户的默认shell.

这是 - 简化 - 源代码:

#define HOME "/home/user"
#define SHELL "/bin/bash"
...
if(chdir(HOME) || chroot(HOME)) return -1;
...
char *shellargv[] = { SHELL, "-login", "-rcfile", "/bin/myscript", 0 };
execvp(SHELL, shellargv);
Run Code Online (Sandbox Code Playgroud)

好吧,无论我怎么努力,似乎当我的测试用户登录时,/ bin/myscript将永远不会被采购.同样,如果我将.bashrc文件放在用户的主目录中,它也会被忽略.

为什么要抨击这些家伙呢?

-

一些精确,但不一定相关,但要澄清评论中提出的一些观点:

  • 'jail'二进制文件实际上是suid,因此允许它成功地chroot().
  • 我用'ln'来制作合适的二进制文件 - 我的jail单元很好地填充:)
  • 这个问题似乎与chrooting用户没有关系...其他东西是疏忽.

bash chroot

8
推荐指数
1
解决办法
1334
查看次数

我可以限制某个进程的某些文件的访问权限吗?

是否可以在Linux中启动进程,并限制其对某些文件/目录的访问?例如:

$ start-process --enable-dir=./sandbox --exec="some-script.sh"
Run Code Online (Sandbox Code Playgroud)

some-script.sh将无法做任何事情./sandbox.

linux permissions chroot

7
推荐指数
1
解决办法
2526
查看次数

chroot()是否需要root权限?

一切都在问题中.当我尝试使用带有"."的chroot时.或完整的路径名作为参数,perror告诉我"不允许操作".如果我的问题的答案是肯定的,是否有另一种方法来更改根目录?(没有使用strcmp()/ strncmp()的野蛮方法

谢谢 !

c linux chroot root

7
推荐指数
2
解决办法
5906
查看次数

OSX和chroot无法找到/ bin/bash

我正试图让chroot在我的mac书上工作.我设置了jail目录以包含/ bin/sh和/ bin/bash的所有要求(递归地称为/ usr/bin/otool)

# ls /var/chroot/*/*
/var/chroot/bin/bash    /var/chroot/bin/sh

/var/chroot/usr/lib:
libDiagnosticMessagesClient.dylib       libauto.dylib
libc++abi.dylib                         libobjc.A.dylib
libSystem.B.dylib                       libc++.1.dylib
libncurses.5.4.dylib                    system
Run Code Online (Sandbox Code Playgroud)

当我尝试在/ var/chroot上使用chroot时,它一直说它无法找到/ bin/bash

# chroot /var/chroot/
chroot: /bin/sh: No such file or directory
$ sudo chroot /var/chroot/
chroot: /bin/bash: No such file or directory
Run Code Online (Sandbox Code Playgroud)

有什么想法导致chroot无法在我的Mac上工作?

OSX版本10.8.4

编辑:在CentOS上,当我运行ldd/bin/bash时,我得到了所有需要的库.如果我不复制它们,它说/ bin/bash:没有这样的文件或目录.所以我认为这意味着在mac上我缺少libs; 只是不确定哪个.

linux macos bash chroot

7
推荐指数
2
解决办法
3267
查看次数

在我的服务器上运行任意不友好的Python代码

我正在制作一款游戏,用户可以编写Python程序来控制互相攻击的机器人.每转一圈(在一个转弯的游戏中)他们的脚本将在我的服务器上运行,以确定机器人的下一步行动.如何防止这些用户对我的服务器有意义?

我想过/研究过以下内容:

  • eval在有限的环境中(即__builtins__禁用)他们的代码
  • 使用特定于操作系统的监狱chroot/ptrace
  • 在某种VM中运行代码

我有一个Python程序,它运行用户的脚本一千次.如何强制执行一分钟的最长总持续时间,限制其内存资源,阻止它们访问任何文件或网络连接等等?什么是理想的解决方案或解决方案组合?

python ptrace chroot virtual-machine jail

7
推荐指数
2
解决办法
863
查看次数

在docker中运行chroot

我有一个商业应用程序,它在chroot环境中提供:启动脚本正在制作chroot,然后启动exe。

该应用程序非常复杂,并且出于支持目的,我不想更改所有环境。

是否可以运行chroot并在docker中启动服务?还是两者不兼容?

chroot docker

7
推荐指数
2
解决办法
6694
查看次数

chroot: 无法运行命令 '/bin/bash': 没有那个文件或目录

在尝试拯救无法启动的 Debian Jessie 系统的过程中,尝试 chroot 时出现以下错误:

chroot: failed to run command ‘/bin/bash’: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我一直在谷歌搜索,据说它与 64 位/32 位冲突有关(从 32 位切入 64 位,反之亦然),但我不知道这如何适用于这里,因为我正在用 64 位实时拯救 64 位系统-hybrid-Debian-USB-stick。

根据 ldd,/bin/bash 位于 chroot 目录中,库依赖项也是如此。

有谁知道导致错误的原因是什么?

以下是我的挂载点和 ls:

  # mount |grep mnt
/dev/mapper/centos_vh200-root on /mnt/vh2 type ext4 (rw,relatime,data=ordered)
/dev/sda1 on /mnt/vh2/boot type ext4 (rw,relatime,data=ordered)
none on /mnt/vh2/proc type proc (rw,relatime)
devtmpfs on /mnt/vh2/dev type devtmpfs (rw,nosuid,size=10240k,nr_inodes=414264,mode=755)
sys on /mnt/vh2/sys type sysfs (rw,relatime)


  # ls -l /mnt/vh2/bin/bash
-rwxr-xr-x 1 root root 1029624 …
Run Code Online (Sandbox Code Playgroud)

chroot

7
推荐指数
1
解决办法
3万
查看次数