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

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

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

有没有办法在 Linux 上实现同样的功能?这样当用户登录远程服务器时,他只能访问自己的文件。

更新:在远程服务器上,用户可以运行 GUI 应用程序。最终目标是防止他们在 File/Open 等中看到系统内部情况,并且防止他们在输入该文件的完整路径时访问 /etc/passwd。

答案1

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

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

最终目标是防止他们在文件/打开中看到系统内部信息

作为终极目标,这有点毫无意义——威胁模型是什么?他们如何通过这样做获得/破坏安全?

答案2

您可以在用户的​​主目录中“chroot”用户(他们无法访问主目录中的上层目录并查看其他任何内容)。您可以检查权限以阻止特殊组中的用户访问(但大多数系统实用程序仍会继续按用户需要运行)。在最后一种情况下,您没有日志(但它们是否有必要,因为您知道您的用户无法查看文件?)

答案3

如果用户使用 ssh 登录,您可以将他们“chroot”到他们的主目录。OpenSSH v4.9p1 允许您使用以下指令执行此操作ChrootDirectory

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

(有关详细信息,请参阅 man sshd_config)

根据您对用户的信任级别,您可能还需要使用受限的 shell,例如外壳或者rbash

答案4

你可以通过以下方式实现rbash

使用此命令创建一个名为 的新用户guest,该用户只能访问其主目录:

sudo useradd -m -s /bin/rbash guest

分解:

  • sudo useradd创建具有 root 权限的用户
  • -m为用户创建并注册主目录
  • -s设置用户的 shell。在我们的例子中,是 rbash 目录
  • /bin/rbashrbash 目录的路径
  • guest我们的用户的名字

结果应该是这样的:关联

相关内容