Linux 安全模組¶
- 作者:
Casey Schaufler
- 日期:
2023 年 7 月
Linux 安全模組 (LSM) 提供了一種機制,用於對 Linux 安全策略實施額外的訪問控制。
各種安全模組可能支援以下任何屬性
LSM_ATTR_CURRENT 是程序的當前活動安全上下文。proc 檔案系統在 /proc/self/attr/current 中提供此值。SELinux、Smack 和 AppArmor 安全模組支援此功能。Smack 也在 /proc/self/attr/smack/current 中提供此值。AppArmor 也在 /proc/self/attr/apparmor/current 中提供此值。
LSM_ATTR_EXEC 是當前映象執行時程序的安全上下文。proc 檔案系統在 /proc/self/attr/exec 中提供此值。SELinux 和 AppArmor 安全模組支援此功能。AppArmor 也在 /proc/self/attr/apparmor/exec 中提供此值。
LSM_ATTR_FSCREATE 是建立檔案系統物件時使用的程序的安全上下文。proc 檔案系統在 /proc/self/attr/fscreate 中提供此值。SELinux 安全模組支援此功能。
LSM_ATTR_KEYCREATE 是建立金鑰物件時使用的程序的安全上下文。proc 檔案系統在 /proc/self/attr/keycreate 中提供此值。SELinux 安全模組支援此功能。
LSM_ATTR_PREV 是設定當前安全上下文時程序的安全上下文。proc 檔案系統在 /proc/self/attr/prev 中提供此值。SELinux 和 AppArmor 安全模組支援此功能。AppArmor 也在 /proc/self/attr/apparmor/prev 中提供此值。
LSM_ATTR_SOCKCREATE 是建立套接字物件時使用的程序的安全上下文。proc 檔案系統在 /proc/self/attr/sockcreate 中提供此值。SELinux 安全模組支援此功能。
核心介面¶
設定當前程序的安全屬性¶
-
long sys_lsm_set_self_attr(unsigned int attr, struct lsm_ctx __user *ctx, u32 size, u32 flags)¶
設定當前任務的安全模組屬性
引數
unsigned int attr要設定哪個屬性
struct lsm_ctx __user * ctxLSM 上下文
u32 sizectx 的大小
u32 flags保留供將來使用
描述
設定呼叫任務的 LSM 上下文。成功後,此函式返回 0。如果指定的屬性無法設定,則返回一個負值,指示錯誤的原因。
獲取當前程序的指定安全屬性¶
-
long sys_lsm_get_self_attr(unsigned int attr, struct lsm_ctx __user *ctx, u32 __user *size, u32 flags)¶
返回當前任務的安全模組屬性
引數
unsigned int attr要返回哪個屬性
struct lsm_ctx __user * ctx用於儲存資訊的使用者空間目標,或 NULL
u32 __user * size指向可用於接收資料的空間大小的指標
u32 flags特殊處理選項。LSM_FLAG_SINGLE 指示僅報告與傳入的 ctx 中標識的 LSM 關聯的屬性。
描述
返回呼叫任務的 LSM 上下文。成功後,此函式返回 ctx 陣列元素的數量。如果沒有分配 LSM 上下文,則此值可能為零。如果 size 不足以包含返回的資料,則返回 -E2BIG 並且 size 設定為最小所需大小。在所有其他情況下,返回指示錯誤的負值。
-
long sys_lsm_list_modules(u64 __user *ids, u32 __user *size, u32 flags)¶
返回活動安全模組的列表
引數
u64 __user * idsLSM 模組 ID
u32 __user * size指向 ids 大小的指標,返回時更新
u32 flags保留供將來使用,必須為零
描述
返回活動 LSM ID 的列表。成功後,此函式返回 ids 陣列元素的數量。如果沒有活動的 LSM,則此值可能為零。如果 size 不足以包含返回的資料,則返回 -E2BIG 並且 size 設定為最小所需大小。在所有其他情況下,返回指示錯誤的負值。