SELinux,Security Enhanced Linux 的縮寫,也就是安全強化的 Linux,是由美國國家安全局(NSA)聯合其他安全機構(比如 SCC 公司)共同開發的,旨在增強傳統 Linux 操作系統的安全性,解決傳統 Linux 系統中自主訪問控制(DAC)系統中的各種權限問題(如 root 權限過高等)。
SELinux 項目在 2000 年以 GPL 協議的形式開源,當 Red Hat 在其 Linux 發行版本中包括了 SELinux 之后,SELinux 才逐步變得流行起來。現在,SELinux 已經被許多組織廣泛使用,幾乎所有的 Linux 內核 2.6 以上版本,都集成了 SELinux 功能。
對于 SELinux,初學者可以這么理解,它是部署在 Linux 上用于增強系統安全的功能模塊。
我們知道,傳統的 Linux 系統中,默認權限是對文件或目錄的所有者、所屬組和其他人的讀、寫和執行權限進行控制,這種控制方式稱為自主訪問控制(DAC)方式;而在 SELinux 中,采用的是強制訪問控制(MAC)系統,也就是控制一個進程對具體文件系統上面的文件或目錄是否擁有訪問權限,而判斷進程是否可以訪問文件或目錄的依據,取決于 SELinux 中設定的很多策略規則。
說到這里,讀者有必要詳細地了解一下這兩個訪問控制系統的特點:
自主訪問控制系統(Discretionary Access Control,DAC)是 Linux 的默認訪問控制方式,也就是依據用戶的身份和該身份對文件及目錄的 rwx 權限來判斷是否可以訪問。不過,在 DAC 訪問控制的實際使用中我們也發現了一些問題: