是否可以将用户锁定到 bash 中的给定目录树中?

是否可以将用户锁定到 bash 中的给定目录树中?

我想将用户锁定到给定的目录树中。也就是说,他/她可以进入树的更深处,但不能离开树的更高处。环境中的其他一切都应该完全相同。

编辑:如果没有 chroot,我该如何做到这一点。我正在通过 Objective-C 启动 bash,可以创建一个类似终端的应用程序。我需要用户能够访问 /usr/include 及其系统上的所有其他位置,我只需要将它们锁定到目录结构中。 chroot 似乎需要 root 权限才能运行。在限制模式下运行 bash 是有限制的。

答案1

chroot你在找什么?

答案2

你想达到什么目的?

如果您想保护用户,那么这是安全问题,我无法想象减少他们cd进入任何目录的能力会有什么好处。您可以尝试虚拟机(非常安全)或 chroot Jail(不是很安全)。

如果你想保护它们免受自身侵害,你可以简单地重写,如下所示cd.bashrc

cd() {
    builtin cd "$@"
    if [[ ! "$(pwd)" =~ ^$HOME ]]
    then
        echo "Escape is futile"
        builtin cd - >/dev/null
    fi
}

答案3

如果没有内核的帮助,您将无法完全限制目录内的用户。即使使用 strace/ktrace 也是有限的,因为正确实现它可能会很复杂,并使用户体验一场噩梦。

如果您使用 FreeBSD,请查看监狱子系统。确实非常高效。否则,如果用户通过以下方式登录,则需要 chroot 用户

相关内容