2014-10-28 25 views
0

我想通過讓我們的用戶的源代碼文件上傳C++,python,lisp,scala等文件到我的linux機器上來自動化測試,他們在一個文件夾中,然後編譯/運行它們來驗證它們是否正確。此服務器不包含任何有關我的用戶的重要信息,因此沒有任何數據庫或任何其他人可以進行破解。但我並不是安全專家,所以我仍然擔心用戶以某種方式尋找以root權限運行任意命令的方式(基本上我不知道哪些事情會出錯)。有沒有安全的方法來做到這一點?如何讓用戶在我的服務器上運行任意源代碼

+1

saas version at http://ideone.com/ – tom 2014-10-28 22:17:31

+1

你會想做某種沙箱/虛擬化,但我不知道該怎麼做。我認爲http://serverfault.com的人可能會更好地回答 – 2014-10-28 22:18:24

+1

或http://security.stackexchange.com/ – ErlVolton 2014-10-28 22:18:43

回答

1

他們會。如果你賦予某人編譯的權力,那麼很難而不是升級到根目錄。你說那個服務器對你來說並不重要,但如果有人向你發送一封來自該服務器的電子郵件,或者改變了一些腳本,在你的家用機器或者你使用的另一臺服務器上獲得了一些信息呢?

至少你需要強烈地將你與他們分開。我建議linux容器,https://linuxcontainers.org/這些日子他們是時髦的。但要小心,無論你保護多少,這都是危險的服務。

0

在任何情況下,您都不應允許用戶使用root權限在您的服務器上運行代碼。然後用戶可以運行rm –rf /,它會刪除服務器上的所有內容。

我建議您創建一個新的本地用戶/組,其權限非常有限,例如只能訪問一個文件夾。因此,當您在服務器上運行代碼時,您將在該文件夾中運行該代碼,並且用戶無法訪問其他任何內容。代碼完成後,您將刪除該文件夾的內容。你還應該大力測試它們是否確實無法銷燬/操縱任何東西。

如果你在FreeBSD上運行,你也可以看看Jail,這是一種虛擬化方式,並將用戶/程序限制在該沙箱中。

1

在Linux中閱讀有關chroot命令的更多信息。

通過這種方式,您可以爲每個正在運行的用戶程序提供單獨的獨立容器。

相關問題