我想将用户锁定到给定的目录树中。也就是说,他/她可以进入树的更深处,但不能离开树的更高处。环境中的其他一切都应该完全相同。
编辑:如果没有 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 用户