2016-12-03 55 views
0

是否可以在Linux(或SELinux專門)中以不同的用戶身份執行方法?我在單個沙箱中運行的程序,每個沙箱都有不同的用戶和進程ID。我有一種情況,我必須以不同的用戶身份和不同的進程ID來執行代碼分支,以防止訪問內存和產生它的代碼的磁盤空間。是否可以在* nix中以不同用戶身份執行分支?

如果不可能,你可以點亮一下內核代碼有多少改變來實現它? (我理解它的主觀性,或者,如果你能提出什麼以及如何去做,那將會很有幫助)。

回答

0

保護一些資源免受在同一臺機器上執行的其他代碼正是導致過程和UID發明的原因。 如果你正在尋找一個看起來像一個簡單的函數調用的機制,我會說這是不可能的,因爲它需要在調用者和被調用者之間共享內存。然而,使用fork/exec(或者如系統())的包裝將會給你一些隔離,只要你使用系統對象如程序參數或管道來處理參數/結果。

儘管* nix用戶旨在保護進程彼此之間的事實,要求在兩個用戶之間建立一個明確的關係,讓一個用戶代表另一個用戶行事。

其實,你可能想:

  • 定義一個sudoers的政策,使你的第一個用戶運行一個命令(或特定的命令)作爲第二個權。
  • 在您的第一個程序中使用popen()(或system())來調用權限較低的代碼。
  • 如果有的話,從標準輸出

傳遞參數和解析的結果作爲一個額外的,你可以使用相同的二進制兩個處決,這樣一來,所有的代碼可以是在同一位置。

相關問題