SELinux Contexts

  1. Linux 執行程序或檔案會以 SELinux 上下文 (Contexts) 做標記,內容包含:SELinux user, role, type, level,以這些資訊來控制存取決定。
  2. ls -Z 查詢檔案的 SELinux contexts,列出四個欄位 user:role:type:level,分別以冒號隔開。
    [root@kvm7 ~]# ls -Z anaconda-ks.cfg 
    -rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg
    
    1. user:使用者身份,以確認 SELinux 策略,Linux user 帳號會被對應到 SELinux user,執行以下命令可以列出兩者的對應,其中 __default__ 表示登入的用戶,一般是使用 useradd 增加的帳號;system_u 表示系統程序,由執行使用者可以確認身份。
      [root@kvm7 ~]# semanage login -l
      Login Name           SELinux User         MLS/MCS Range        Service
      __default__          unconfined_u         s0-s0:c0.c1023       *
      root                 unconfined_u         s0-s0:c0.c1023       *
      system_u             system_u             s0-s0:c0.c1023       *
      
    2. role:SELinux 以 Role-Based Access Control (RBAC) 控制存取,角色 (role) 決定是否可存取 domain,而每個 user 可以有多個角色,但同一時間只能有一個角色。
    3. type:指定資料型別,規則中定義何種程序型別訪問何種檔案。
    4. level:Multi-Level Security (MLS) and Multi-Category Security (MCS),僅在 MLS 策略下才有用。
  3. SELinux Contexts 四個欄位說明:
    項目 用戶 (user) 角色 (role) 類型 (type) 級別 (level)
    程序 system_u 為系統服務程序,受到管制。 unconfined_u 為不管制程序,通常都是用戶自己開啟的,如 bash。 system_r 為系統服務程序,受到管制。 unconfined_r 為不管制程序,通常都是用戶自己開啟的,如 bash。 在 targeted 策略下,只有兩者的類型對應上(不代表相同),程序才能存取檔案。 MLS 安全級別,僅在 MLS 策略下才有意義。
    檔案 system_u 為系統服務創建的檔案。 unconfined_u 為用戶自己創建的檔案。 均為 object_r,表示一個檔案。

    在 targeted模式下,只有兩者的類型對應上了(不代表相同),程序才能存取檔案。 MLS 安全級別,僅在 MLS 模式下才有意義。