我想通過讓我們的用戶的源代碼文件上傳C++,python,lisp,scala等文件到我的linux機器上來自動化測試,他們在一個文件夾中,然後編譯/運行它們來驗證它們是否正確。此服務器不包含任何有關我的用戶的重要信息,因此沒有任何數據庫或任何其他人可以進行破解。但我並不是安全專家,所以我仍然擔心用戶以某種方式尋找以root權限運行任意命令的方式(基本上我不知道哪些事情會出錯)。有沒有安全的方法來做到這一點?如何讓用戶在我的服務器上運行任意源代碼
0
A
回答
1
他們會。如果你賦予某人編譯的權力,那麼很難而不是升級到根目錄。你說那個服務器對你來說並不重要,但如果有人向你發送一封來自該服務器的電子郵件,或者改變了一些腳本,在你的家用機器或者你使用的另一臺服務器上獲得了一些信息呢?
至少你需要強烈地將你與他們分開。我建議linux容器,https://linuxcontainers.org/這些日子他們是時髦的。但要小心,無論你保護多少,這都是危險的服務。
0
在任何情況下,您都不應允許用戶使用root權限在您的服務器上運行代碼。然後用戶可以運行rm –rf /
,它會刪除服務器上的所有內容。
我建議您創建一個新的本地用戶/組,其權限非常有限,例如只能訪問一個文件夾。因此,當您在服務器上運行代碼時,您將在該文件夾中運行該代碼,並且用戶無法訪問其他任何內容。代碼完成後,您將刪除該文件夾的內容。你還應該大力測試它們是否確實無法銷燬/操縱任何東西。
如果你在FreeBSD上運行,你也可以看看Jail,這是一種虛擬化方式,並將用戶/程序限制在該沙箱中。
1
在Linux中閱讀有關chroot命令的更多信息。
通過這種方式,您可以爲每個正在運行的用戶程序提供單獨的獨立容器。
相關問題
- 1. 如何安全地讓用戶運行任意的Ruby代碼?
- 2. 如何讓Sonar Runner在源服務器上運行時運行?
- 3. 在服務器上運行Python代碼
- 4. 如何讓ASP.NET MasterPage在我的服務器上運行?
- 5. 如何讓Django在我的Web服務器上運行?
- 6. 我將如何在ASP.Net服務器上運行連續任務?
- 7. 如何服務器代碼運行MVC2
- 8. 如何讓我的docker centos sshd無密碼服務器運行?
- 9. 如何在用戶簽入代碼後在TFS服務器上執行代碼
- 10. 在多臺服務器上運行我的java代碼
- 11. 如何從構建代碼中分離任務運行器(Gulp - Grunt)源代碼?
- 12. 如何在服務器端Java代碼中運行JavaScript代碼?
- 13. 我如何在Firebase中運行服務器端代碼?
- 14. 如何輕鬆在Linux服務器上運行C#代碼?
- 15. 運行的代碼在服務器端
- 16. 服務器上的C++代碼,在客戶端機器上運行
- 17. 我有一個本地的Tomcat服務器上運行詹金斯源代碼的任務
- 18. 如何讓我的代碼,在蟒蛇服務器
- 19. Java:如何從瀏覽器調用在服務器上運行的代碼?
- 20. 無法讓散景服務器在服務器上運行
- 21. 如何使服務器和客戶端在任何機器上運行
- 22. 適用於iOS的任何webdav或ftp服務器源代碼?
- 23. 我如何在服務器上編譯我的服務器代碼?
- 24. 在服務器端運行代碼
- 25. 在服務器端運行jQuery代碼?
- 26. 在Web服務器上執行用戶提供的ruby代碼
- 27. 如何讓websocket客戶端等待服務器正在運行?
- 28. 我有xampp mysql服務器運行,我該如何運行代碼?
- 29. 如何在特定用戶帳戶下運行構建服務器任務?
- 30. 讓用戶指定服務在哪個帳戶上運行
saas version at http://ideone.com/ – tom 2014-10-28 22:17:31
你會想做某種沙箱/虛擬化,但我不知道該怎麼做。我認爲http://serverfault.com的人可能會更好地回答 – 2014-10-28 22:18:24
或http://security.stackexchange.com/ – ErlVolton 2014-10-28 22:18:43