我正在服务器上运行 Minecraft。我怎样才能让我的朋友 SSH 访问我的世界文件夹(根文件夹)、命令screen
和一些端口?
答案1
为了实现前两点,你必须将用户监禁到所需的目录,有时它的术语称为沙箱,它与chroot
Linux 相关。
可以找到一篇好文章 hove to chroot (jail) a ssh user这里。
关于第三点我不确定,但你可以看看如何使用 iptables 限制用户/组的网络访问 - 所有者匹配。
但我不确定你是否必须给他这样的限制/特权。
答案2
在 FreeBSD 上,我们可以使用 jail 来限制用户。但 Linux 上没有 jail。(它可能存在,但它不是系统的一部分。)FreeBSD 上的 Jail 是操作系统级别的虚拟化。我们可以在 Linux 上实现同样的事情。我建议你阅读那篇文章,因为它也提到了一些可以做到这一点的程序。我建议在操作系统级别进行虚拟化以获得更好的性能:
http://wiki.openvz.org/Introduction_to_virtualization
所以基本上,你就像第二个操作系统一样运行,你的朋友将受到它及其内容的限制。将运行的第二个操作系统将像在文件夹内运行一样,您的朋友将无法退出它以查看文件的其余部分。他将仅限于此。这比 chroot 有更多优势,因为可以很容易地逃脱 chroot 创建的沙箱。
您将能够毫无问题地访问我的世界文件夹。但是,如果您希望您的朋友能够访问 screen,您还必须在第二个操作系统上安装 screen,并安装您希望您的朋友能够访问的所有其他内容。
通常,您的第二个操作系统将有其特定的 IP,您只需说每当有东西连接到您的计算机的端口 x 和 y 时,将其重定向到该 IP。因此,如果他通过端口(您希望他用于 SSH 的端口)连接到您的计算机,他将被重定向到第二个操作系统。与我的世界端口相同。
另外,为了让您更轻松,您可以创建一个指向“minecraft”文件夹的符号链接,这样您就不必总是转到第二个操作系统的文件夹来访问“minecraft”文件夹。
它可能不是您最好的解决方案(或者可能是),但它仍然是您应该考虑的可行解决方案,因为它不难设置,并且提供最大的安全性和隐私性。