我想让我的一些朋友通过创建用户帐户来访问我的计算机。他们主要通过 sftp 和 ssh 访问我的计算机,但有时他们也可以在我家里访问它。但是我不希望他们能够看到我的所有文件(不是我的主目录中的个人文件,我的意思是驻留在用户目录之外的文件,例如 etc、lib...)
我最近问了一个问题:
OpenSSH,chroot 用户:root 需要拥有用户目录,有什么后果吗?
给我的要求是,如果我 chroot 用户,我将需要为每个用户创建一个完整的环境。
有没有一种方法可以真正阻止用户走出他们的主目录,并阻止他们将参数传递给像cp
这样指向他们的主目录之外的程序,或者有什么方法可以真正保持我的系统的私密性?最好的解决方案是什么?我希望他们能够充分使用我的所有程序,但无法复制或读取文件,或使用程序读取或复制其主目录之外的文件。
答案1
我怀疑您是否可以允许他们充分使用您的所有程序,但无法读取家中以外的文件。所需要的只是一个依赖于配置文件的程序来破坏它。
您可以创建虚拟机并授予他们对虚拟机的用户(或 root)访问权限。
一些常见的虚拟机解决方案是:
- Xen
- 虚拟盒子
- 键盘虚拟机
- 开放VZ
答案2
您有几个选项可以使您的主目录(或其一部分)不受限制。
使用 . 将您的主目录更改为仅所有者访问
chmod 700 ~
。这将只允许您和 root 访问该目录。将您的主目录移至加密的文件系统。 (这将阻止他们在您未加密的情况下访问它。如果在您的文件系统未加密时他们可能具有访问权限,请与上述内容结合使用。)
使用文件加密工具来防止访问单个文件。
将私有文件隐藏在隐藏目录中。使用类似的名称
.private
来隐藏您的私人内容。这只是默默无闻的安全。您需要将其与上述一个或多个选项结合起来以确保其安全。
请记住,如果您向您的朋友授予 root 访问权限,他们就有很大的权力绕过您的安全设置。 (与您不想共享的文件共享对系统的访问权限存在风险。)
答案3
根据“完全使用我的所有程序”的含义,选项包括:
使用标准 Unix 文件权限来保护您的文件。这样做的优点是设置非常容易,只需决定要保护哪些文件并为其设置适当的权限即可。缺点是您的朋友将无法执行系统上的所有操作,因为他们没有 root 访问权限
运行 FreeBSD 监狱。 FreeBSD 有专门为此目的而设计的监狱。设置它们需要花费一些精力,但是您为您的朋友提供了一个完整的文件系统,他们可以按照自己的意愿使用:http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/jails.html
运行真正的虚拟机。可以运行 Xen 或 Virtualbox 来为您的朋友提供完全可操作的服务器。这在内存、CPU 和磁盘方面可能是相当资源密集型的,但它与文件的分离程度最高。