阻止用户查看和访问$ HOME以外的文件系统

在Windows上,可以“隐藏”驱动器的内容,非特权用户的系统文件夹,并让他们只访问其用户目录中的文件。 在这种情况下,即使用户做文件/打开,他们也只能看到他们的用户目录。

有没有办法在Linux上实现相同的? 因此,当用户login到远程服务器时,他只能访问他自己的文件。

更新:在远程服务器上,用户可以运行GUI应用程序。 最终目标是防止他们在File / Open等文件中看到系统内部信息,并阻止他们访问/ etc / passwd,如果他们input该文件的完整path。

简短的回答是没有。 为了让用户与他们的数据进行交互,他们需要使用程序(bash,ls,cat,vi …)。 为了使用这些程序,用户必须能够列出它们所包含的目录并从包含这些程序的文件中读取它们。

您可以通过适当地设置权限(和权限掩码)和/或通过chroot限制访问权限(但他们仍然可以看到他们有权访问的configuration和可执行文件)来阻止用户访问其他用户的数据文件。

最终目标是阻止他们在File / Open中看到系统内部

作为一个终极目标,这是没有意义的 – 威胁模型是什么? 他们怎么能通过这样做来获得/颠覆安全?

你可以在用户的​​家中“chroot”用户(他们不能在他们的homedir上面看到其他东西)。 您可以检查权限来阻止访问特殊组中的用户(但大多数系统实用程序仍按用户需要继续工作)。 在这最后一种情况下,你没有日志(但是你知道你的用户不能看到文件,他们是否必要?)

如果用户使用sshlogin,你可以“chroot”到他们的主目录。 OpenSSH v4.9p1允许你使用ChrootDirectory指令来实现这个function:

 Match group sftponly ChrootDirectory /home/%u X11Forwarding no AllowTcpForwarding no 

(有关更多详细信息,请参见man sshd_config)

根据您对用户的信任级别,您可能还想使用像lshell或rbash这样的受限shell。