是否预计 firejail 允许在没有“--overlay”标志的情况下在沙箱之外进行 R/W?

是否预计 firejail 允许在没有“--overlay”标志的情况下在沙箱之外进行 R/W?

刚刚安装火狱在 Ubuntu 16.04 上(版本0.9.38)并根据这个Linux 杂志 文章,默认情况下它应该回读整个文件系统:

沙箱中的程序仅有所有目录的读取权限,因此无法操作任何重要文件。

现在,我在我的电脑上尝试了以下操作:

  1. touch /disk5/test.txt
  2. firejail gvim /disk5/test.txt
  3. 修改文件并保存(wq!
  4. cat /disk5/test.txt
  5. 显示所做的更改格维姆期间火狱会议!

这是预期的行为吗?不是火狱应该保护我免于覆盖原始文件吗?我做错了什么?请注意,它/disk5安装在根文件系统中,在我的/home.

提出了一个错误github

答案1

firejail并不是一个让一切恢复正常的神奇工具。它是一种安全工具,定义你自己的规则来处理事情。例如,这些论点:

firejail --noprofile

根本不会提供任何保护。因为你没有指定任何约束,而 firejail 默认是允许的。为了使某些目录为只读,你应该明确地写出来。类似于:

firejail --noprofile --read-only=/ --read-only=~ --read-only=/tmp

(我分别写了和/,因为 firejail 有一种有点令人惊讶的行为,它会根据一些不那么简单的规则对你的指令进行排序,并在中间制作自己的坐骑。)~/tmp~

此外,如果没有任何--caps.drop=all参数,--seccomp您的程序无论如何都不会安全。因为该进程可以通过 unix 套接字、抽象套接字等与其他进程通信,从而利用它们的漏洞。如果您想要一个相对不错的“监狱”,请至少添加 seccomp、caps.drop=all 和 nonewprivs 指令。

编辑:您提到的引述可能是错误的。(或者我认为是错误的。)这比“一切都是只读的”更复杂。

答案2

为什么要将程序保存在非标准 Unix 目录(例如 /disk5)中?这绝对是自找麻烦。将可执行文件存储在常规位置,例如 /bin、/usr/bin、/usr/local/bin 甚至 /opt。确保所有可执行文件都归 root 所有,而普通用户没有对它们的写访问权限。Linux 是 Unix 系统,只要遵守 Unix 规则,您就会安全。

相关内容