Linux
禁止除 FIFO 之外的程序的文件 IO
你如何啟動一個除了讀取和寫入預先創建的 FIFO 之外不能進行任何文件 IO(打開/關閉文件、創建/刪除文件、讀取/寫入文件等)的程序?
(
chroot
將無法正常工作,因為該過程可以擺脫它,但是弄亂/修改核心等是可以的)順便說一句:我無法修改正在執行的程序
如果
- 可以修改程序以在任何不受信任的程式碼之前進行您選擇的系統呼叫(這可以通過LD_PRELOAD完成),並且
- 該程序不需要執行任何系統呼叫,超出
exit()
,和sigreturn()``read()``write()
那麼你可以使用seccomp(維基百科文章)。為了允許更多的系統呼叫,還有 seccomp-bpf,它使用Berkeley Packet Filter來確定允許哪些系統呼叫。libseccomp庫簡化了seccomp -bpf,因此(例如)如果您想允許
close()
系統呼叫:seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(close), 0);
或者對於類似的東西
chroot
,但不能被打破,你可以嘗試Linux containers,OpenVZ或Linux VServer。