2010-10-26 75 views
2

有沒有辦法將一個linux進程裝入一個特定的目錄,給這個進程獨佔權限rw訪問這個目錄?例如,創建一個臨時工作目錄,然後開始python或其他腳本工具,只能在此目錄中編寫,而不會限制其功能。而且,只有這個進程可以訪問從這個目錄讀取(當然超級用戶除外)。給unix進程獨佔RW訪問一個目錄

我需要這個沙箱的基本上允許用戶運行任意代碼的Web服務。我們目前在軟件本身進行授權,但最終所有進程都作爲同一個linux用戶運行。我們需要一種方式,讓用戶不會對系統造成任何傷害,但是有一個臨時的私人工作目錄來寫入和讀取受到Web服務其他用戶保護的文件。

回答

0

文件權限基於所有者/組未處理,因此同一用戶運行的多個程序將能夠訪問擁有的目錄。但是,如果在運行之前爲每個進程創建了一個臨時目錄,然後它就沒有進程應該能夠從其chroot jail退出以訪問其他目錄。

基本概念是,就進程而言,臨時目錄成爲目錄樹的頂部。這個過程不知道,也不能改變,超過它。否則,它可以讀/寫創建/刪除其沙箱中的內容。

例如:

/rundir 
/rundir/temp1 <-- process 1 chroot jailed here, can't go above 
/rundir/temp2 <-- process 2 chroot jailed here, can't go above 

又見 「人8 chroot環境」。

0

以這樣一種方式,它只能寫該目錄中 ,不限制 太多的它的功能。

哇,這聽起來很神奇。幾乎沒有編程問題。

0

聽起來像你想要的東西像Linux的FreeBSD Jail相當於,或至少是一些非常相似。這個blog posting至少包含一個同名工具的描述。

0

您可以使用像Grsecurity這樣的內核補丁(還有其他人可以完成這項工作,我認爲尋找SELinux和AppArmor)來爲某個進程實施RBAC(基於角色的訪問控制)。

根據您的使用場景,我認爲使用安全增強內核是必須的。