2012-03-25 60 views
2

我正在研究用C語言編寫的需要在內部運行可執行文件的應用程序,因爲我需要限制exe從讀取或寫入任何內容到應用程序。沙盒中的可執行文件C

我該如何限制文件訪問或更改計算機上的文件?

+3

您可以使用chroot jail。我不確定是否有跨平臺的方式,但對於Mac/Linux來說,這是微不足道的。 – Blender 2012-03-25 20:36:16

+0

您應該考慮在虛擬機中運行。 – 2012-03-25 20:36:21

+1

你可以試試[Capsicum](http://www.cl.cam.ac.uk/research/security/capsicum/)。 – chrisaycock 2012-03-25 20:36:55

回答

0

到目前爲止,最簡單的方法是以很少的權限創建一個新用戶,然後以該用戶的身份運行該程序。

但是,要做到這一點的方法取決於系統,linux可以運行useradd,而windows幾乎肯定可以通過windows api實現。

3

我不認爲這是一個必然的C問題。

一個常見的技術是在'chroot jail'中運行程序。

如果您想從C程序中自行完成,請使用系統調用chroot(man 2 chroot)。

兩種方法都限制程序在文件系統的有限(葉或樹枝)部分運行。這將程序限制爲只要您想放入該目錄和子目錄。它不能超過它被chroot化的目錄,所以系統相對安全。

這可能需要很多照顧才能正確編程,所以我建議首先嚐試使用chroot命令。

不知道Windows是否具有類似的機制,但是* NIX和Mac可以。

如果這是'真實的'看看一些越獄引用,例如 http://www.unixwiz.net/techtips/chroot-practices.html