Linux怎么禁用内核非特权用户调用BPF功能kernel.unprivileged_bpf_disabled

老枫吖_7799

老枫吖_7799

2026-10-19

300人浏览

原创

直接设置unprivileged_bpf_disabled为1即可禁用非特权bpf,但该值设为1后不可运行时修改,必须重启才能更改;其仅限制非root用户调用bpf系统调用,需配合cap权限管控、debugfs禁用等措施才能全面收敛风险。

linux怎么禁用内核非特权用户调用bpf功能kernel.unprivileged_bpf_disabled

直接设置 unprivileged_bpf_disabled 为 1 即可禁用非特权 BPF

只要内核版本 ≥ 3.15(几乎全部现代发行版都满足),且未被编译为完全禁用 BPF(即 CONFIG_BPF_SYSCALL=y),就可以通过写入 /proc/sys/kernel/unprivileged_bpf_disabled 立即生效。值设为 1 表示:非 root 用户调用 bpf() 系统调用将直接返回 -EPERM,且该值**不可再运行时修改**——必须重启才能改回 0 或 2。

unprivileged_bpf_disabled 的三个取值含义和陷阱

这个参数不是简单的“开/关”开关,不同值的行为差异极大:

  • 0:默认值,允许非特权用户使用 BPF(含 eBPF 加载、map 创建等)——这是大多数开发/调试环境的起点,但生产环境极不推荐
  • 1:禁止非特权用户调用 bpf(),且**写入后无法再通过 echo 改回其他值**;验证方式是普通用户执行 bpf(BPF_PROG_LOAD, ...) 会失败,cat /proc/sys/kernel/unprivileged_bpf_disabled 仍显示 1
  • 2:同样禁止非特权调用,但**允许管理员后续再次写入 0 或 1**;适合需要临时放开调试又不想重启的场景(如容器平台运维)

注意:unprivileged_bpf_disabled=1 是单向锁,误设会导致 sudo 用户以外的所有 BPF 工具(如 bpftool、tc 带 bpf 分类器、cilium agent 初始化)全部失败,且无提示——只报 Operation not permitted。

如何验证是否真正禁用成功

不能只看 echo 1 > /proc/sys/kernel/unprivileged_bpf_disabled 是否返回成功,必须用非 root 用户实测关键路径:

Obsidian (Linux)
Obsidian (Linux)

操作 Obsidian 库(纯 Markdown 笔记),并通过 notesmd-cli 实现自动化。

下载
  • 运行 bpftool prog list(应报错 Permission denied)
  • 在普通用户下尝试加载一个最简 bpf 程序(如用 libbpf 调用 bpf_prog_load())
  • 检查 strace -e trace=bpf su -c 'true' 2>&1 | grep -q "bpf.*-1 EPERM" 是否命中
  • 确认 cat /proc/sys/kernel/unprivileged_bpf_disabled 输出确实是 1(不是空或报错)

特别注意:某些发行版(如 RHEL 8.8+、Ubuntu 22.04 LTS 后续内核)默认已设为 2,而非 0;直接设 1 前建议先 cat 确认当前值。

永久生效要加 GRUB 参数,别只靠 sysctl

/proc/sys 设置会在重启后丢失。若需每次启动都禁用,必须在 GRUB 内核命令行中添加:

unprivileged_bpf_disabled=1

操作步骤:sudo nano /etc/default/grub → 修改 GRUB_CMDLINE_LINUX 行,追加该参数 → sudo update-grub && sudo reboot。否则重启后恢复为默认值(通常是 0 或 2),安全策略形同虚设。

另外,unprivileged_bpf_disabled=1 只管系统调用入口,不防 root 用户滥用;真正收敛风险还需配套关闭 perf_event_paranoid、限制 CAP_SYS_ADMIN 和 CAP_BPF、禁用 debugfs 等——它只是整条加固链里关键但非唯一的一环。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

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

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

2023.06.21

4110

4

如何安装LINUX
如何安装LINUX

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

2023.06.29

3493

10

linux find
linux find

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

2023.06.30

2693

5

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

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

2023.07.05

6570

7

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

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

2023.07.06

6222

7

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

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

2023.07.20

3613

8

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

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

2023.07.20

3085

4

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

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

2023.07.25

3319

6

linux查找文件命令
linux查找文件命令

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

2023.07.31

297

3

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习