如何在 Linux 中将文件路径伪装成另一个文件路径

如何在 Linux 中将文件路径伪装成另一个文件路径

我想让文件路径 /var/test 对于用户 test123 显示为 /root。我不希望它们实际上位于根目录中,但我希望它显示为位于 /root 中,这样他们就无法在不稍微窥探的情况下分辨出来。我会将其设置为他们的主目录,并在其下创建一个完整的目录结构。总体想法是拥有类似于 chroot 监狱的东西。

我找不到任何有关根据登录用户或类似内容伪装目录名称的信息,其他人有什么建议吗?

答案1

我认为你想结合 ssh chroot 监狱和绑定安装。假设chroot根目录是/home/test123

  • 创建一个chroot环境,我喜欢使用jailkit(https://olivier.sessink.nl/jailkit/

  • 在 chroot 内创建绑定挂载 mount -o bind /var/test /home/test123/root

  • 为 chroot 设置 sshd,有几个关于此的操作方法,但基本上您想要将 test123 添加到 sshchroot 用户组,然后将其添加到您的 /etc/ssh/sshd_config 中: Match group sshchroot ChrootDirectory /home/%u
  • 重新启动 sshd

答案2

如果你不想要一个真正的 chroot 监狱,那么你必须将用户的会话隔离到一个单独的挂载命名空间,则有/var/test 绑定安装仅在/root该名称空间内。实现这一点需要定制用户会话创建。也许自定义 PAM 库可以做到这一点?

(实现留给读者作为练习:我实际上不知道任何适合实现此目的的现成工具,因此这可能需要编写自定义的 PAM 库。但是,容器化技术已经引起了很多快速开发Linux 命名空间 - 也许实际上已经实现了一些可用的东西,但我只是不知道它?)

然而:如果我遇到一个系统,其中像非 root 用户这样的用户test123具有对 的写入权限/root,更不用说将其作为主目录,我会立即假设存在某种欺骗,因为如果真的存在,这将是一个极其异常和不安全的配置。如果我注意到这一点并且没有 root 访问权限,我会尝试尽快通知实际的系统管理员。如果我是系统管理员并且没有其他解释,我强烈希望断开该系统与网络的连接(如果可能的话,首先进行取证内存转储),关闭它并将其磁盘带到另一台计算机进行分析,这会作为副作用击败你的欺骗。

因此,除了诊断和取证之外,我真的不知道这种设置可以实现什么。

相关内容