我可以在沒有 root 的情況下限制進程對指定檔案和標準輸出的存取嗎?

我可以在沒有 root 的情況下限制進程對指定檔案和標準輸出的存取嗎?

我想設定一個伺服器供學生上傳C代碼。伺服器編譯 C 程式碼,執行二進位檔案並向學生顯示輸出。

現在我有安全問題。學生可以上傳任何程式碼,但我希望他們只能存取 2 個指定檔案(1 個用於讀取,1 個用於寫入fopen)和標準輸出。我不希望他們存取互聯網或系統上的任何其他文件。

我的伺服器是容器化的Linux,而且我沒有root。

我考慮過這些解決方案:

  1. chroot或者 firejail。 (我沒有伺服器的root。它是容器化的,不允許設定euid)

  2. 使用某些gcc選項、.h檔案或 C 庫限制。 (我對編譯知之甚少。理論上人們可以用 C 做任何事情而不使用任何頭檔或函式庫)

  3. 使用類似strace或 的東西ptrace來監視進程並在它想做我不希望它做的事情時終止它。

可以這樣做嗎?

相關內容