將 binfmt-misc 與 xattrs 結合使用

將 binfmt-misc 與 xattrs 結合使用

我目前在我的 14.04 機器上使用一款沙盒軟體,將 Linux 二進位檔案相互隔離(使用與 AppArmor 不同的特殊類型的命名空間隔離)

目前,呼叫沙箱的方式是這樣的:

/usr/local/bin/sandbox /path/to/binary --optional-arguments

我的問題是,我想調用某些任意二進位並讓它們在沙箱中執行沒有必須將該/usr/local/bin/sandbox部分新增到我的 shell 命令之前。 IE:

/usr/local/bin/sandbox /path/to/binary --optional-arguments --> *new process*

變成:

/path/to/binary --optional-arguments --> *binfmt-misc* --> *new process*

我認為藉助 binfmt-misc,我可以輕鬆地做到這一點,但是在閱讀文件後,它似乎只支援透過文件本身中的魔術位或透過其文件副檔名請求解釋器。由於在這種特定情況下執行任何這些操作都是不需要付費的,因此我在binfmt-misc 中尋找了一個選項,該選項可以允許我在我想要在沙箱中啟動的某些二進位檔案上指定擴充屬性,然後binfmt-misc 可以讀取這些二進位檔案並用於確定這些二進位檔案必須由/usr/local/bin/sandbox「解釋器」執行。然而,我還沒有找到這樣的功能可以讓我這麼做。

有沒有什麼方法可以讓我使用沙箱自動啟動任意 ELF 二進位文件,而無需為與我的電腦相同的架構編譯副檔名?

答案1

我不知道如何透過 binfmt-misc 和 xattrs 來做到這一點,但我會提出一種不同的方法。我還沒有嘗試過,但我不明白為什麼它不起作用。

這個想法是使用一個聯合安裝透過呼叫沙箱的包裝腳本隱藏真正的二進位。我們需要一個聯合掛載,其中上層目錄主要被讀取並寫入到下層目錄的非陰影文件,這並不是所有聯合掛載系統都支援的。特別是,這排除了現在內建在 Linux 核心中的 OverlayFS。

編寫通用包裝腳本:

#!/bin/sh
exec /usr/local/bin/sandbox "${0#/sandboxed}" "$@"

建立一個目錄/sandbox並建立一個聯合掛載來隱藏根檔案系統。我會用奧夫斯(烏班圖:aufs-tools),不幸的是最近已被放棄;也許有更好的選擇。

mount -t aufs -o br:/,br:/sandbox aufs-sandbox /

對於要沙箱處理的每個可執行文件,連結到包裝器腳本(在 下/sandbox/path/to/foo建立必要的目錄之後)。/path/to/sandbox

相關內容