gpt4 book ai didi

linux - chroot 替代

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:10:37 25 4
gpt4 key购买 nike

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

我知道 chroot 是执行此操作的一种方式,但它不安全并且您需要 root 特权才能 chroot(理想情况下应用程序不需要)。

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

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

编辑:我可以设置 SSH 连接并限制连接,但这似乎不必要地占用资源。

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

最佳答案

Linux 内核 2.6.16+ 添加了 unshare() 系统调用。

要 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

P.S.:但是如果你想与父 rootfs 通信,你必须在 chroot 之前在 ./target 中挂载绑定(bind)一些东西。

关于linux - chroot 替代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15670387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com