Mount
適用於 Linux 的 Sandbox 類似解決方案
我想知道是否有一種適用於 linux 的沙盒解決方案,有時有多個應用程序可以解決我的問題,在這種情況下,我想嘗試所有這些應用程序以獲得更適合我需求的應用程序。
通常我在某處提取 .deb 文件並導出
PATH
env 添加 bin 目錄並LD_LIBRARY_PATH
添加 lib 目錄。大多數情況下它執行良好,但有時應用程序需要 /etc 配置,或共享文件夾上的圖像等其他資源,我無法解決。我的測試機器很舊,所以我的資源很少,虛擬機會讓我很厭煩,在我的磁碟上單獨安裝 linux 執行 chroot 會比虛擬機在性能上更讓我滿意,但由於重複文件,它仍然需要一些不需要的空間,幾乎所有這些都與我的原始發行版相同。
我想知道是否有某種混合 mount -bind 與一些魔術標誌或其他解決方案,如下所示:
$ mkdir dir1 dir2 $ echo "Lipsum" > dir1/file1 $ echo "Original" > dir1/file2 $ sudo mount -o bind -some-magic-flag dir1 dir2 $ echo "Changed" > dir2/file2 $ touch dir2/file3 $ ls -1 dir2 file1 file2 file3 # it's ok $ ls -1 dir1 file1 file2 # file3 sould not be here! $ sudo umount dir2 $ ls -1 dir2 file2 file3 # file1 was not changed, should not be repeated here, but file2 was $ cat dir1/file2 Original $ cat dir2/file2 Changed
我可以使用overlayfs:
mount -t overlay -o “lowerdir=/original,upperdir=/overlay,workdir=/tmp/workdir” 覆蓋/mnt/target
/original
未觸及的地方是over/overlay
更改的結果,因此是文件中的文件加上./mnt/target``/original``/mnt/target``/original``/overlay
是
/tmp/work
一個控制目錄,掛載存在時是必須的,解除安裝後不需要保留。
我的第一個建議是切換到 BSD 並執行 jail,但我假設你不想要那樣。所以我會推薦Dockers,它基本上是一種將應用程序與系統其餘部分隔離的方法。