Linux Capability 解析

文章目錄

    • 1. 權限模型演進背景
    • 2. Capability核心原理
      • 2.1 能力單元分類
      • 2.2 進程三集合
      • 2.3 文件系統屬性
    • 3. 完整能力單元表
    • 4. 高級應用場景
      • 4.1 能力邊界控制
      • 4.2 編程控制
      • 4.3 容器安全
    • 5. 安全實踐建議
    • 6. 潛在風險提示

1. 權限模型演進背景

在傳統UNIX權限模型中,采用二進制特權劃分(普通用戶 vs root用戶)存在顯著缺陷:

  1. 權限顆粒度過粗
  2. 特權程序攻擊面過大
  3. 特權繼承難以控制

Linux Capability機制應運而生(始于2.2內核),實現:

  • 特權操作的細粒度劃分
  • 動態權限分配與控制
  • 最小特權原則實施

2. Capability核心原理

2.1 能力單元分類

將root特權分解為獨立能力單元,每個單元對應特定操作權限(當前內核6.x共41項)

2.2 進程三集合

集合類型作用描述特性
Permitted能力允許的最大集合靜態上限,不可自增
Effective當前實際生效的能力運行時動態切換
Inheritable可被子進程繼承的能力影響exec執行時的能力轉移

2.3 文件系統屬性

通過擴展屬性存儲執行時的能力分配策略:

  • setuid程序特權執行時的能力賦值規則
  • 二進制文件的能力白名單定義

3. 完整能力單元表

能力名稱內核版本權限描述
CAP_AUDIT_CONTROL2.6.11+配置審計子系統
CAP_AUDIT_READ3.16+讀取審計日志(RAW/非翻譯格式)
CAP_AUDIT_WRITE2.6.11+生成審計日志記錄
CAP_BLOCK_SUSPEND3.5+阻止系統掛起(epoll系統調用)
CAP_BPF5.8+管理BPF程序和映射
CAP_CHECKPOINT_RESTORE5.9+內核checkpoint/restore操作
CAP_CHOWN2.2+任意文件屬主修改
CAP_DAC_OVERRIDE2.2+繞過文件讀、寫、執行權限檢查
CAP_DAC_READ_SEARCH2.2+繞過目錄讀/搜索權限檢查
CAP_FOWNER2.2+忽略文件屬主檢查(如chmod操作)
CAP_FSETID2.2+設置setuid/setgid時保留位
CAP_IPC_LOCK2.2+鎖定內存(mlock/mlockall)
CAP_IPC_OWNER2.2+繞過IPC所有權檢查
CAP_KILL2.2+繞過信號發送權限檢查
CAP_LEASE2.4+建立文件租約(fcntl F_SETLEASE)
CAP_LINUX_IMMUTABLE2.2+設置FS_IMMUTABLE和FS_APPEND_FL屬性
CAP_MAC_ADMIN2.6.25+配置MAC策略(SELinux/SMACK等)
CAP_MAC_OVERRIDE2.6.25+覆蓋強制訪問控制(MAC)
CAP_MKNOD2.4+創建設備特殊文件(mknod)
CAP_NET_ADMIN2.2+網絡配置(接口、防火墻、QoS等)
CAP_NET_BIND_SERVICE2.2+綁定低端口(<1024)
CAP_NET_BROADCAST2.2+網絡廣播、組播操作
CAP_NET_RAW2.2+RAW/PACKET套接字操作
CAP_PERFMON5.8+系統性能監控與觀察
CAP_SYS_ADMIN2.2+系統管理操作(掛載、ns操作、swapon等)
CAP_SYS_BOOT2.2+觸發系統重啟(reboot)
CAP_SYS_CHROOT2.2+使用chroot()系統調用
CAP_SYS_MODULE2.2+加載/卸載內核模塊
CAP_SYS_NICE2.2+提升進程nice值,修改調度策略
CAP_SYS_PACCT2.4+配置進程記賬(acct)
CAP_SYS_PTRACE2.4+ptrace調試任意進程
CAP_SYS_RAWIO2.2+直接端口訪問(ioperm/iopl)和內存操作
CAP_SYS_RESOURCE2.2+覆蓋資源限制(如Disk quota)
CAP_SYS_TIME2.2+修改系統時鐘/硬件時鐘
CAP_SYS_TTY_CONFIG2.6.4+虛擬終端配置(vhangup)
CAP_SYSLOG2.6.37+特權syslog操作(kernel printk速率限制等)
CAP_WAKE_ALARM3.11+設置喚醒定時器(RTC喚醒)

注:統計截至Linux 6.4內核版本,能力定義位于include/uapi/linux/capability.h

4. 高級應用場景

4.1 能力邊界控制

# 授予Nginx綁定低端口特權
setcap 'cap_net_bind_service=+ep' /usr/sbin/nginx# 查看二進制文件能力
getcap /usr/sbin/nginx

4.2 編程控制

#include <sys/capability.h>
// 動態放棄能力
cap_t caps = cap_get_proc();
cap_clear_flag(caps, CAP_EFFECTIVE);
cap_set_flag(caps, CAP_PERMITTED, CAP_NET_RAW, CAP_CLEAR);
cap_set_proc(caps);
cap_free(caps);

4.3 容器安全

# 僅允許容器修改系統時間
docker run --cap-drop ALL --cap-add SYS_TIME -it alpine

5. 安全實踐建議

最小權限原則
僅授予必要的能力集,通過 capsh --drop=XXX 啟動進程
文件能力審查
定期使用 getcap -r / 檢查全盤文件能力設置
運行時監控
結合 /proc/[pid]/status 中的CapEff/CapPrm/CapInh字段監控進程能力
命名空間隔離
結合user/network/mount等namespace限制能力作用域
審計系統集成
監控 CAP_AUDIT_* 相關能力的異常使用

6. 潛在風險提示

不可撤銷特權
部分能力一旦獲取無法主動放棄(如CAP_SYS_MODULE)
隱式權限提升
某些系統調用可能隱含多個能力需求
組合攻擊向量
看似無關的兩個能力組合可能產生提權風險
內核版本差異
新能力在不同發行版中的支持情況需精確驗證

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/919588.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/919588.shtml
英文地址,請注明出處:http://en.pswp.cn/news/919588.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vue 監聽 sessionStorage 值的變化

<template><div class"specific-storage-watcher"><h3>僅監聽 userId 變化</h3><p>當前 userId: {{ currentUserId }}</p><p v-if"changeRecord">最近變化: {{ changeRecord }}</p><button click"…

IDEA:控制臺中文亂碼

目錄一、設置字符編碼為 UTF-8一、設置字符編碼為 UTF-8 點擊菜單 File -> settings -> Eitor -> File Encodings , 將字符全局編碼、項目編碼、配置文件編碼統一設置為UTF-8, 然后點擊 Apply 應用設置&#xff0c;點擊 OK 關閉對話框:

[Sql Server]特殊數值計算

任務一&#xff1a;求下方的Num列的中值:參考代碼:use Test go SELECT DISTINCTPERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY Num) over()AS MedianSalary FROM MedianTest;任務二: 下方表中,每個選手有多個評委打分&#xff0c;求每個選手的評委打分中值。參考代碼:use Tes…

01-Docker概述

Docker 的主要目標是:Build, Ship and Run Any App, Anywhere,也就是通過對應用組件的封裝、分發、部署、運行等生命周期的管理,使用戶的 APP 及其運行環境能做到一次鏡像,處處運行。 Docker 運行速度快的原因: 由于 Docker 不需要 Hypervisor(虛擬機)實現硬件資源虛擬化…

Laravel中如何使用php-casbin

一、&#x1f680; 安裝和配置 1. 安裝包 composer require casbin/laravel-authz2. 發布配置文件 php artisan vendor:publish這會生成兩個重要文件&#xff1a; config/lauthz.php - 主配置文件config/lauthz-rbac-model.conf - RBAC 模型配置文件 3. 運行數據庫遷移 php…

算法題打卡力扣第4題:尋找兩個正序數組的中位數(hard))

題目描述 提示&#xff1a; nums1.length m nums2.length n 0 < m < 1000 0 < n < 1000 1 < m n < 2000 -106 < nums1[i], nums2[i] < 106 解答思路 我的想法是先歸并排序再直接返回下標中位數 代碼 double findMedianSortedArrays(int* nums1,…

無人機抗噪模塊技術概述!

一、 技術要點1. 傳感器數據融合與濾波&#xff08;解決感知噪聲&#xff09;核心思想&#xff1a;單一傳感器易受干擾且不全面&#xff0c;通過融合多種傳感器&#xff08;IMU慣性測量單元、GPS、氣壓計、磁力計、視覺傳感器、激光雷達等&#xff09;的數據&#xff0c;利用算…

Horse3D游戲引擎研發筆記(六):在QtOpenGL環境下,仿Unity的材質管理Shader繪制四邊形

在上一篇筆記中&#xff0c;我們已經實現了基于QtOpenGL的BufferGeometry管理VAO和EBO繪制四邊形的功能。這一次&#xff0c;我們將深入探討材質管理系統的實現&#xff0c;包括Shader的加載與編譯、材質的創建與使用&#xff0c;以及如何通過材質系統繪制帶有自定義Shader效果…

MySQL-分庫分表(Mycat)

目錄 1.介紹? 概述 拆分策略 垂直拆分? 水平拆分? 實現技術? shardingJDBC: MyCat: 2.Mycat概述 環境準備? 分片配置 schema.xml? server.xml 啟動服務? 分片測試? 3.MyCat配置 schema.xml? schema標簽 datanode標簽 ?datahost標簽? rule.xml …

Dubbo 的 Java 項目間調用的完整示例

1. 項目結構假設項目分為三個模塊&#xff1a;api&#xff1a;定義服務接口provider&#xff1a;服務提供者consumer&#xff1a;服務消費者2. 依賴配置在 pom.xml 中添加 Dubbo 和注冊中心&#xff08;如 Nacos&#xff09;的依賴&#xff1a;<dependency><groupId&g…

Python進行中文分詞

1. jieba庫概述 jieba&#xff08;“結巴”&#xff09;是Python中最流行的中文分詞庫&#xff0c;采用基于前綴詞典實現的高效分詞算法&#xff0c;支持多種分詞模式&#xff0c;是中文自然語言處理(NLP)的基礎工具。 核心特性 精確模式&#xff1a;試圖將句子最精確地切開&am…

JavaScript 性能優化實戰:從原理到落地的完整指南

一、引言&#xff1a;為什么 JavaScript 性能優化至關重要&#xff1f;性能與用戶體驗的強關聯數據支撐&#xff1a;加載延遲每增加 1 秒&#xff0c;用戶轉化率下降 7%&#xff08;來自 Google 研究&#xff09;核心痛點&#xff1a;現代 Web 應用中 JS 代碼體積膨脹、運行時卡…

前端自動化部署

摘要&#xff1a;前端自動化部署是通過工具和流程自動化實現前端代碼從開發完成到線上發布的全流程&#xff0c;減少人工操作、提高效率并降低出錯風險。核心目標減少重復操作&#xff1a;自動化構建、測試、部署等步驟&#xff0c;替代手動上傳服務器等低效方式。提升發布效率…

peewee中db.create_tables(tables, safe=True),safe=True作用

db.create_tables(tables, safeTrue) 中的 safeTrue 參數的作用是 防止在表已經存在的情況下引發錯誤。 具體來說&#xff1a; 當 safeTrue 時&#xff1a;Peewee 會在生成的 SQL 語句中加入 IF NOT EXISTS 子句&#xff08;例如&#xff1a;CREATE TABLE IF NOT EXISTS my_tab…

2025年計算機視覺與圖像國際會議(ICCVI 2025)

2025年計算機視覺與圖像國際會議| 視界創新&#xff0c;圖領未來 2025年計算機視覺與圖像國際會議&#xff08;ICCVI 2025&#xff09;將在中國東莞盛大召開。這不僅是一次匯聚全球頂尖科學家、工程師和學者的盛會&#xff0c;更是一個探索計算機視覺和圖像處理領域前沿技術與未…

Temu美國站大規模掃號封店:虛假本土店遭批量封禁,如何規避?

2025年8月&#xff0c;Temu平臺針對美國站再次掀起大規模掃號風暴。大量店鋪因注冊信息違規被判定為“高風險”&#xff0c;不僅店鋪被凍結&#xff0c;商品也被下架并禁止補貨。這一輪清掃&#xff0c;讓不少依靠“資料店”快速起盤的賣家遭遇重創。事實上&#xff0c;Temu的風…

航空發動機葉片yolov8模型訓練和轉換(包含適配rk3588-pt轉onnx轉rknn)

前言&#xff1a; 1.訓練在windows進行&#xff0c;因為電腦沒有顯卡&#xff0c;所以純cpu訓練&#xff0c;生成pt后轉onnx 2.onnx轉需要在Ubuntu虛擬機上運行 3.數據集標定快捷鍵 &#xff08;模型訓練時不需要&#xff09;官方地址和下載pt權重&#xff1a;鏈接&#xff…

PyTorch如何修改模型(魔改)?/替換模型,一般除了注意輸入輸出一致,還有其他要修改的嗎?

一、PyTorch如何修改模型&#xff08;魔改&#xff09;? 可以參考這個鏈接&#xff0c;看了一下還不錯&#xff1a; PyTorch如何修改模型&#xff08;魔改&#xff09;_模型魔改-CSDN博客 二、替換模型&#xff0c;一般除了注意輸入輸出一致&#xff0c;還有其他要修改的嗎?…

Pycharm Debug詳解

Pycharm Debug詳解看這個工具欄就是 PyCharm 調試器的“步進/斷點”按鈕區。常用按鈕和作用&#xff08;從左到右一般是這些&#xff09;&#xff1a; Resume / 繼續運行&#xff08;F9&#xff09;&#xff1a;從當前斷點繼續跑&#xff0c;直到下一個斷點或程序結束。Step Ov…

將SSL配置遷移到Nacos的步驟

將SSL配置遷移到Nacos的步驟 要將SSL配置從本地application.yml遷移到Nacos配置中心&#xff0c;需要完成以下幾個步驟&#xff1a; 1. 創建Nacos配置文件 在Nacos中創建一個新的配置文件&#xff08;例如application-ssl.yml&#xff09;&#xff0c;內容如下&#xff1a; ser…