Mount

適用於 Linux 的 Sandbox 類似解決方案

  • April 27, 2016

我想知道是否有一種適用於 linux 的沙盒解決方案,有時有多個應用程序可以解決我的問題,在這種情況下,我想嘗試所有這些應用程序以獲得更適合我需求的應用程序。

通常我在某處提取 .deb 文件並導出PATHenv 添加 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,它基本上是一種將應用程序與系統其餘部分隔離的方法。

引用自:https://unix.stackexchange.com/questions/107986