Ubuntu 的沙盒覆盖

Ubuntu 的沙盒覆盖

我想要一些像 Windows 上的 Sandboxie 这样的功能。

也就是说,我想在沙箱中运行一个程序。该程序不会检测沙箱,通常可以从沙箱外部读取文件。但是当程序尝试写入文件时,文件只会写入沙箱中,而不会写入外部。然后,可能在沙箱之外,我希望以某种方式仅查看在沙箱内创建的文件。

我读在 ubuntu 上安装 Sandboxie但这似乎不是我想要的。

根据http://www.linux-magazine.com/Issues/2015/173/Firejail,Firejail 具有覆盖功能,但当创建这些文件的程序结束时,这些文件会被销毁。相反,我想检查这些文件。

看来这些覆盖内容自内核 3.18 以来就是 Linux 的一部分,不确定是否有办法使用它们来实现我想要的效果。

我有 Lubuntu 16.04.1 和 Linux 内核 4.4.0-53-generic。

答案1

Firejail 可以配置为使用允许保留的文件“白名单”,这样您就可以使用它而不会删除您想要保留的文件。如果您只是想看看会写入哪些文件,您也可以阅读日志。

https://firejail.wordpress.com/features-3/man-firejail/

   --read-write=dirname_or_filename
          Set  directory  or  file  read-write.  Only files or directories
          belonging to the current user are allowed  for  this  operation.
          Example:

          $ mkdir ~/test
          $ touch ~/test/a
          $ firejail --read-only=~/test --read-write=~/test/a

在 Docker 中运行应用程序将是一个更复杂的情况,除非它们是命令行应用程序,否则它们将无法工作,因为没有额外的配置就没有图形服务器共享。此外,docker 的设计更有助于这些单独的容器相互通信,这是你没有说过你需要的东西(在这个沙盒模型中可能也不需要)

答案2

您可以为此使用 Docker 容器。Docker 容器是名牌旧 LXC 容器,很久以前被称为 BSD jails。使用 Docker 容器及其卷安装功能,以便您事后检查数据并保存。

相关内容