文章目录

    • 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…