2016-01-20 70 views
-1

l有一個網站託管在Linux服務器上,並且我的根目錄是(/ home/MyAccountName)。 我的網站允許用戶上傳那裏的C++/c代碼,編譯並執行它。保護Linux主機服務器上的網站文件

的問題是:

的執行用戶程序將所有的所有者權限(讀 - 寫-execute)。

所以如果用戶的代碼如下:

system('cd/&& rm -r MyAccountName');

執行時,我所有的網站文件將被刪除形式的服務器。

的問題是:

如何保護用戶執行的程序我的網站文件,並給它有限的權限。

注意

我有Linux服務器(所有者)上只有一個用戶,我不能在服務器中創建一個新用戶。

+0

標題不可能理解。 –

+0

一般警告:讓用戶在服務器上執行任意代碼是一個非常糟糕的主意,除非您確切知道自己在做什麼,否則不應該這樣做。 – fuz

+0

這是關於服務器管理,而不是編程,因此在堆棧溢出問題上是無關緊要的。 – Olaf

回答

1

標準解決方案將在一些chroot甚至一個容器中執行它們的代碼。您可以修改您的網站以創建一個臨時目錄,chroot並執行用戶代碼,因此用戶無法與您的文件或系統的其他部分進行交互。如果用戶代碼可能與某些共享庫鏈接,則可以提供只讀訪問權限,可以使用mount --bind來完成,以使主要文件系統的某些部分在chroot中可用。

0

我認爲您的需求與實現在線評判系統類似,您可以在GitHub上搜索「在線評委」。示例judge

也許你可以研究Sandbox這是一種分離正在運行的程序的安全機制。