題 是否應該在沒有“ - 覆蓋”標誌的情況下,火蜥蜴允許在沙箱外面使用R / W?


剛裝好 firejail 在Ubuntu 16.04上(版本 0.9.38)並據此 Linux的雜誌  文章,默認它應該 R / O 整個文件系統:

沙箱中的程序只能讀取所有目錄,因此無法操作任何重要文件。

現在,我在我的電腦上嘗試了以下內容:

  1. touch /disk5/test.txt
  2. firejail gvim /disk5/test.txt
  3. 修改文件並保存(wq!
  4. cat /disk5/test.txt
  5. 確實顯示完成的更改 GVIM  firejail 會!

這是預期的行為嗎?不 firejail 應該保護我不要覆蓋原始文件?我做錯了什麼? 請注意 /disk5 安裝在我的文件系統之外的根文件系統中 /home

提出了一個bug github上


5
2017-12-12 09:36


起源


你忘了追加了 --private 國旗到Firejail。是的,真的 man 頁面狀態 Only /home and /tmp are writable. Are you sure you are not trying this under your Home? Or a folder/disk mounted under your Home or something like that? Checking the man page is also useful, there are tons of various options for Firejail. man firejail`並查看您可能需要的其他參數。 - Shiki
@Shiki /disk5/... 安裝在我家外面,這就是為什麼我很驚訝...... - Emanuele


答案:


firejail 不是一個讓一切都正確的神奇工具。這是一個安全工具  定義你自己的如何處理東西的規則。例如,這些參數:

firejail --noprofile

根本不會給予任何保護。因為您沒有指定任何約束,並且默認情況下firejail是允許的。為了使一些dirs只讀,你應該明確地寫它。就像是:

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

(我寫 /~ 和 /tmp 因為firejail有一些令人驚訝的行為,通過一些不那麼瑣碎的規則對你的指令進行排序並自行製作 ~ 坐在中間。)

而且,沒有任何 --caps.drop=all 參數, --seccomp 而且無論如何你的程序都不會安全。因為進程可以通過unix套接字,抽象套接字等與其他進程通信,利用它們的bug。如果你想要一個相對好的“監獄”,至少添加seccomp,caps.drop = all和nonewprivs指令。

編輯:你提到的報價可能是錯的。 (或者我認為。)它比“一切都是只讀的”更複雜。


1
2018-02-09 14:10





為什麼要將程序保存在非標準的Unix目錄中,例如/ disk5?你肯定是在惹麻煩。將可執行文件存儲在常規位置,例如/ bin,/ usr / bin。 / usr / local / bin,甚至/ opt。確保所有可執行文件都歸root用戶所有,並且常規用戶沒有對它們的寫入權限。 Linux是一個Unix系統,只需遵循Unix規則,你就會安全。


-3
2017-12-20 21:46



我不能真的,特別是如果那些是第三方軟件,如游戲 蒸汽,我自己編譯的可執行文件,我正在開發/構建等等...我不會,也不能肯定安裝在系統bin路徑下... - Emanuele