讲师中心 微信公众号
AI工具推荐 视频效率加速

Linux怎么在Systemd中配置CapabilityBoundingSet剥离特权

雨丽酱_8811

雨丽酱_8811

发布时间:2026-10-27 11:40:04

|

451人浏览过

|

来源于php中文网

原创

CapabilityBoundingSet 是能力边界限制而非赋予权限,必须配合 NoNewPrivileges=true 才能阻断 execve 提权;仅设 CapabilityBoundingSet 而不启用 NoNewPrivileges 会导致 CAP_SYS_ADMIN 等高危能力仍可被继承或重获。

linux怎么在systemd中配置capabilityboundingset剥离特权

直接结论:CapabilityBoundingSet 不是“赋予权限”,而是“禁止继承超出列表的能力”,必须配合 NoNewPrivileges=true 才能真正封死提权路径。

CapabilityBoundingSet 的作用机制和常见误解

很多人误以为写 CapabilityBoundingSet=CAP_NET_BIND_SERVICE 就等于“给了绑定 80 端口的能力”——其实它只声明“允许保留这个能力”,前提是进程启动时本来就拥有它(比如从 root 启动后未 drop)。更关键的是,它默认不阻止进程后续通过 execve() 加载 setuid 二进制或加载内核模块重新提权。

真正起效的前提是:NoNewPrivileges=true 必须启用,否则 CapabilityBoundingSet 形同虚设。

常见错误现象:

  • 服务仍能执行 mount、setcap 或读取 /proc/kcore
  • getpcaps $(pgrep myapp) 显示仍有 CAP_SYS_ADMIN
  • 用 strace -e capset,prctl 跟踪发现进程在启动后调用了 prctl(PR_SET_NO_NEW_PRIVS, 1) 失败

如何正确配置最小能力集并验证生效

以仅需监听 80 端口的 Web 服务为例,推荐配置片段如下:

Lab2startup Ecosystem
Lab2startup Ecosystem

师生共创生态系统对接指南。当用户需要对接大学政策、平台资源、投资机构、产业伙伴等外部资源支持时使用。触发词:师生共创生态、大学支持、平台赋能、投资对接、产业合作、政策支持、清华x-lab、孵化器、创业资源

下载
[Service]
User=webapp
Group=webapp
NoNewPrivileges=true
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
# 显式排除高危能力(等价于 CapabilityBoundingSet=~CAP_SYS_ADMIN CAP_SYS_RAWIO ...)
CapabilityBoundingSet=~CAP_SYS_ADMIN CAP_SYS_MODULE CAP_SYS_PTRACE CAP_AUDIT_WRITE CAP_IPC_OWNER
AmbientCapabilities=CAP_NET_BIND_SERVICE

说明:

  • AmbientCapabilities 是必须项:它让非特权用户(如 User=webapp)也能在 exec 之后继续持有该能力,否则即使 CapabilityBoundingSet 允许,普通用户进程也无法实际绑定低端口
  • 使用 ~CAP_XXX 语法比逐个列出更安全,避免遗漏隐式继承的能力
  • getpcaps $(pgrep webapp) 输出应只含 CAP_NET_BIND_SERVICE,且末尾带 cap_eff 标记表示当前生效

为什么不能只靠 CapabilityBoundingSet?关键依赖项

CapabilityBoundingSet 单独存在时,以下环节仍可能绕过限制:

  • 若未设 User=xxx,进程仍以 root 运行,capability 只是锦上添花,不是权限主体
  • 若未禁用 RestrictSUIDSGID=false(默认 false),进程仍可 exec 一个 setuid root 二进制,重新获得全部 capability
  • 若未配 ProtectSystem=strict 和 ProtectHome=true,攻击者可通过覆盖 /etc/ld.so.preload 或写入 /home 下的 shell 配置劫持环境
  • 内核版本低于 4.3 时,AmbientCapabilities 不可用,此时必须用 setcap 预置二进制文件能力(不推荐,破坏不可变性)

验证是否真被剥离:三步检查法

改完单元文件后,务必执行:

  1. systemctl daemon-reload && systemctl restart myapp.service
  2. getpcaps $(pgrep -f "myapp") —— 确认输出中只有预期能力,且无 cap_bnd 漏出
  3. journalctl -u myapp -n 20 --no-pager —— 查看是否有 Operation not permitted 类报错,尤其是 bind()、chroot()、pivot_root() 等系统调用失败

最容易被忽略的一点:CapabilityBoundingSet 对子进程无效,除非子进程也显式继承 ambient 能力或本身被 setcap。如果你的服务会 fork 出 Python 子进程去调用 socket.bind(80),那子进程大概率失败——这时得换用 ambient + NoNewPrivileges 组合,或改用 iptables REDIRECT 把 80 流量转给 8080。

热门AI工具

更多
PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

4250

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

3593

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2833

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

6930

2023.07.05

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

6582

2023.07.06

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

3773

2023.07.20

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

3285

2023.07.20

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

3499

2023.07.25

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

100

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpMyAdmin 安装文档
phpMyAdmin 安装文档

共0课时 | 0人学习

ubuntu官方总文档
ubuntu官方总文档

共0课时 | 0人学习

phpstorm开发手册
phpstorm开发手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn