Linux作業系統的許可權管理

2021-10-24 21:21:53 字數 2331 閱讀 9123

linux作業系統是乙個多使用者作業系統,這樣就存在資源共享與隔離的問題。也就是說使用者1的資源不願意讓使用者2訪問,使用者3的資源與使用者4的資源可以共享;同時,又存在超級使用者(root)訪問所有使用者資源的可能性。因此在linux作業系統下就需要一套許可權管理的功能。

linux原生的許可權管理機制是基於使用者角色的管理機制,也就是ugo+rwx/acl許可權控制。

自主訪問控制(discretionary access control, dac)是指物件(比如程式、檔案、程序)的所有者超級使用者可以任意修改或者授予此物件相應的許可權。這裡的擁有者就是指具體的使用者,也就是角色(例如root),可以使用絕對模式(八進位制數字模式),符號模式指定檔案的許可權。這種控制方式的問題在於黑客入侵後可以以該使用者的角色執行任何允許的操作。

從使用者角度來說檔案的許可權是通過rwx字串表示的,其實在底層實現就是一些標示位。如果該位置1則表示有該許可權,否則沒有該許可權。這些資訊儲存在檔案的inode資訊中

上圖中的巨集定義就是linux核心中對檔案許可權屬性的巨集定義,例如s_irusr表示主許可權可讀的標示,這裡需要理解的是每個標示占用乙個位。由於底層是二進位制的方式儲存的,chmod也是支援通過數字的方式修改其許可權屬性的。比如執行如下命令:

chmod ugo=rwx file

chmod 777 file

基於標籤的訪問控制,可以通過對程式和將要訪問的資源打上標籤,控制著核心授予每個程序的訪問許可權,這樣程式就可以訪問有標籤的資源,對於沒有標籤的資源則不能訪問。這種策略被稱作強制訪問控制(mandatory access control ,簡稱mac)。其中selinux就是強制訪問控制。

selinux通過標籤的方式實現對主體與被訪問物件的控制。例如,對於nginx程序想訪問某個目錄下的檔案,那麼需要對nginx程序和該目錄都打上標籤,並標註其可訪問性,這樣nginx程序才可以訪問該目錄。

selinux原理的核心是規則庫(policy database)。當有程序訪問資源(例如檔案,或者套接字)時,核心中的介面中會通過規則庫中的資料進行匹配,如果滿足要求,則可訪問;否則阻止訪問,並記錄審計日誌。

selinux通常並非預設開啟的,如果使用該特性需要我們手動開啟。如果想實時開啟selinux,直接執行如下命令即可。

sudo setenforce 1
但如果想永久生效,則需要修改selinux的配置檔案,將selinux=disabled修改為enforcing,就可以使selinux永久生效(需重啟系統)。

selinux=enforcing
permissive:該引數的含義是只記錄日誌,不進行實際的控制。

selinuxtype:  表示該selinux使用的規則庫。selinux預設定義了很多規則庫,所以通常情況下,我們只需要開啟就可以了。但是有時候也並非如此,此時就需要根據情況定義自己的規則(策略,policy)。

注意:selinux 並不是讓你摒棄dac控制,selinux是乙個並行的控制模型,乙個應用可以同時受seliunx和dac的控制

參考2:linux下selinux****,豁然開悟

參考3:linux檔案系統之一:inode節點和inode節點包含的block定址資訊

linux作業系統目錄及許可權

絕對路徑 從 目錄開始描述的路徑為絕對路徑,如 cd home ls usr 相對路徑 從當前位置開始描述的路徑為相對路徑,如 cd ls abc def 和.每個目錄下都有.和.表示當前目錄 表示上一級目錄,即父目錄 根目錄下的.和.都表示當前目錄 使用者能夠控制乙個給定的檔案或目錄的訪問程度,乙...

作業系統(15) Linux的使用者許可權

linux是乙個多使用者多工的分時作業系統,可以多個使用者同時登陸linux。這一點比windows可優秀多了。乙個使用者操作linux需要經過三個步驟的許可權認證 linux中有賬戶的概念 賬戶實質上就是乙個使用者在系統上的標識。作業系統為了識別每個使用者,會給每個使用者定義乙個id,就是uid。...

Linux作業系統入門 執行緒管理

1.程序與執行緒 程序是作業系統分配資源的單位,執行緒是作業系統排程的單位 每個程序都有自己的資料段 段 堆疊段,執行緒在記憶體空間共享乙個程序資源 執行緒間彼此切換所需的時間遠遠小於程序間彼此切換,所以稱執行緒為輕量級程序。2.執行緒建立函式pthread create 函式原型 int pthr...