天天看點

安全上下文

版權聲明:您好,轉載請留下本人部落格的位址,謝謝 https://blog.csdn.net/hongbochen1223/article/details/45176195

(一)、類型強制政策的安全上下文

所有的作業系統通路控制都是基于與主體和客體相關的通路控制屬性的。在SELinux中,通路控制屬性杯稱作安全上下文。所有的客體(檔案,程序間通信,通信管道,套接字,網絡主機等)和主體(程序)有一個和他們相關的單一安全上下文。一個安全上下文有三個元素:使用者,角色和類型辨別符。指定和顯示一個安全上下文常用的格式如下:

使用者(user):角色(role):類型辨別符(type)

每一個元素的字元串辨別符杯定義在SELinux的政策語言中,政策語言的細節後面慢慢讨論。就現在來說,僅僅了解一個有效的安全上下文一定要有一個有效的使用者,角色和類型辨別符,并且辨別符被政策書寫者定義。每一個辨別符的命名空間都是正交的。(是以,舉個例子,使用者,角色和類型有相同的字元串辨別符是可以的,但是不推薦使用。)

檢查安全上下文:

SELinux通過添加-Z選項修改了系統指令來展示主體和客體的安全上下文。例如,ls -Z 顯示了檔案系統對象的安全上下文,ps -Z展示了程序的安全上下文。另外一個有用的指令是 id,他展示你的shell的安全上下文(也就是說,你的目前的使用者,角色和類型)。下面的例子展示了一個運作在SELinux中的shell的安全上下文。

$ id -Z

joe:user_r:user_t

你可以在你自己的SELinux中使用這些指令,正如我們在這一章節中使用的一樣。

(二)、SELinux和标準Linux比較

此時此刻,比較在标準Linux和SELinux中的通路控制屬性是非常有用的。為了簡單起見,我們堅持使用常用的檔案系統對象,例如檔案和目錄。在标準Linux中,主體的程序通路屬性是通過程序結構體提供的在linux核心中所有程序的真實有效的使用者ID群組ID。這些屬性被核心所保護着,并且經過一些列的控制方式來設定。包括登入程序和setuid程式。對于客體來說,檔案的索引節點包含着一系列的通路模式位和檔案的使用者ID群組ID,前者是基于三個讀/寫/可執行位的集合來實作控制通路,這三個分别代表檔案擁有者,檔案組和其他任何人。後者決定了檔案的所有者群組來決定對于一個給定的通路嘗試應該使用哪一個位集合。

正如前面所述,在SELinux中,通路控制屬性他基本上就是安全上下文。所有的客體和主體有一個相關的安全上下文。标準Linux使用程序的使用者/組ID,檔案通路模式位和檔案使用者/組ID來同意或者是拒絕通路,SELinux使用程序和客體的安全上下文來進行通路控制。更具體的說,由于SELinux的主要通路控制特征是TE,即類型強制政策,安全上下文中的類型辨別符被用來決定通路。

注意:

SELinux是在标準Linux之上添加的類型強制機制。也就是說标準Linux和SELinux通路控制都必須滿足才能通路客體。是以,例如,我們有SELinux對于檔案的一個寫權限,但是沒有标準linux的寫權限,我們依然不能想檔案中寫入資料。

下面的表列出了标準Linux和SELinux的一些差別:

(三)、關于安全上下文更多的資訊

安全上下文是一個簡單的,一緻的通路控制屬性。在SELinux中,類型辨別符是安全上下文中決定通路的主要的部分。由于曆史原因,程序的類型經常被稱作域(domain)。使用域和域類型來代表程序的類型是比較普遍的,是以我們不可避免的要是用術語“域”。大體上,認為域,域類型,主體類型和程序類型是同義的。

在安全上下文中的使用者辨別符和角色辨別符在通路控制政策中起很小的作用,因為是類型強制政策而不是限制條件強制政策,限制條件強制政策我們将在第七章中讨論。對于程序來說,使用者辨別符和角色辨別符是非常有趣的。

因為他們被用來控制使用者辨別符和Linux使用者賬戶的類型相關聯的。對于客體來說,使用者辨別符和角色辨別符幾乎沒用。作為一個公約,一個客體的角色通常是 object_r ,一個客體的使用者通常是建立該客體的程序的使用者辨別符。他們在通路控制中沒有作用。

最後,要知道标準Linux中的使用者ID和SELinux在安全上下文中的使用者辨別符的不同。技術上,他們是完全正交的辨別符,被标準的通路控制機制和安全增強型的通路控制機制分别使用。他們之間的任何聯系都是通過登入程序按照公約嚴格提供的,而不是被SELinux政策直接實施的。

上一篇: C實作萬年曆

繼續閱讀