unix chroot监狱shell(有或没有sudo?)

unix chroot监狱shell(有或没有sudo?)

目前我正在创建一个 chroot 监狱。因此我读了一些文章,一切似乎都很清楚,除了一件事:chroot监狱shell

在一个来源中,他们创建了以下设置(当然设置要大得多,但这是我有问题的部分):

监狱设置了一些程序和库。
chroot 监狱文件夹是/jail/.
现在我们要创建用户监狱在我们的新监狱里。
因此,我们打开该文件/etc/sudoers并在其中写入以下行:

prison ALL=NOPASSWD: /usr/bin/chroot, /bin/su - prison  

然后,我们在监狱中创建该文件/bin/chroot-shell作为用户在连接 ssh 时必须使用的 shell。内容是:

#!/bin/bash
/usr/bin/sudo /usr/bin/chroot /jail/ /bin/su - $USER "@"  

有趣的部分是,既没有/usr/bin/sudo也没有/bin/chroot被复制到/jail/.
链接预期:当用户尝试使用 sftp(例如 WinSCP)登录时,它可以工作。但是,当他尝试在 SSH 上使用终端(例如使用 Putty)时,它会失败并显示以下行:

sudo: unknown uid 1001: who are you?

所以我的问题是:

  1. 这种配置 chroot 监狱的方法不是一种不安全的方法吗?将一个被监禁的人放入 sudo 配置文件对我来说似乎没有意义。那么它背后的想法是什么?为什么不直接复制/bin/bash到监狱并让用户使用它而不是自己的bin/chroot-shell和 sudo 条目呢?
  2. 如果这种方式比使用更安全/bin/bash,那么我怎样才能让它工作呢?我认为第一步是复制/usr/bin/sudo/usr/bin/chroot到监狱目录,对吧?但下一步怎么办? sudo 不认识用户...

感谢您的帮助,并对我的英语不好表示歉意。
问候,
克里斯

解决方案
到目前为止,我不知道为什么我读到的文章的作者想要创建一个自己的 shell 并为监狱中的用户提供某些命令的 sudo 权限。
但这篇文章是 2008 年的,所以有点过时了。
我现在将/bin/bashShell 作为被监禁用户的默认 shell(使用命令chsh)。另外,我必须确保库/lib/libdl.so.2 /lib/libc.so.6 /lib/ld-linux.so.2(在我的例子中是 32 位和 64 位)都在监狱中,因此被监禁的用户有一个正确的用户名。因为如果没有这些,就没有正确的方法从文件中的用户 ID 中获取用户名paswd
之后,用户可以使用工作 shell 打开正确的 ssh 连接,并且命令行知道他们是谁(行开头的 präfix 名称以及命令whoami)。
就是这样,现在一切都正常了^^

相关内容