【问题标题】:chroot alternativechroot 替代
【发布时间】:2013-03-27 22:03:12
【问题描述】:

我正在开发一个允许用户运行 Octave 代码(基本上是 Matlab)的 web 应用程序(在 Ubuntu 服务器上运行)。但是,我只希望他们能够读取或修改其指定主文件夹中的文件夹。

我知道chroot 是这样做的一种方式,但它不安全,并且您需要 root 权限才能 chroot(理想情况下,应用程序不需要)。

另外,我可以在运行之前读取用户的代码,如果他们尝试写入文件,我会抛出错误,但为此我需要考虑用户可能违反我的规则的各种方式以防止它发生。

我查看了Linux-VServer,但这需要为每个用户单独的虚拟服务器(除非我弄错了)。

编辑:我可以建立一个 SSH 连接并锁定连接,但这似乎是不必要的资源贪婪。

有没有一种方法可以在不使用 chroot 的情况下将用户或进程监禁到特定文件夹?

【问题讨论】:

  • 如果您可以选择更改操作系统:FreeBSD 具有更好的监禁进程功能。其他 BSD 风格也可能这样做。

标签: linux ubuntu filesystems chroot


【解决方案1】:

unshare() 系统调用已在内核 2.6.16+ 中添加到 Linux。

要chroot到rootfs目录./target/并以非root用户运行/bin/bash,你可以这样做:

unshare -r sh -c 'chroot ./target/ /bin/bash'

它通常比:

fakechroot fakeroot chroot ./target/ /bin/bash

甚至比:

LD_LIBRARY_PATH=./target/lib:./target/usr/lib:./target/lib64:./target/lib/x86_64-linux-gnu:./target/usr/lib/x86_64-linux-gnu ./target/bin/bash #or ld-linux.so.2 --library-path ... ./target/bin/bash

【讨论】:

    猜你喜欢
    • 2012-11-30
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-09
    • 2015-12-22
    相关资源
    最近更新 更多