/proc/sys/kernel/yama/ptrace_scope的作用

/proc/sys/kernel/yama/ptrace_scope 是 Linux 系统中用于控制 ptrace 系统调用权限的配置文件。ptrace 是一个用于调试和跟踪进程的系统调用(例如,GDB 依赖它实现断点调试),但同时也可能被恶意软件滥用(如进程注入、数据窃取)。Yama 安全模块 通过 ptrace_scope 提供了细粒度的权限控制,以增强系统安全性。

目录

作用与背景

ptrace_scope 的取值与含义

具体行为分析

模式 0:经典模式

模式 1:受限模式(默认)

模式 2:管理员模式

模式 3:完全禁用

配置与管理

查看当前值

临时修改

永久生效

调试场景的权限处理

非 root 用户调试非子进程

容器环境(Docker)

注意事项

总结


作用与背景

  1. 核心目标

    • 限制 ptrace 的使用范围,防止非特权用户恶意跟踪或控制其他进程。

    • 避免进程间通过调试接口进行未经授权的交互。

  2. Yama 模块

    • 属于 Linux 安全模块(LSM)的扩展,默认在多数现代发行版(如 Ubuntu、Fedora)中启用。

    • 提供额外的进程间调试和跟踪权限管理。


ptrace_scope 的取值与含义

权限级别适用场景
0经典模式:无额外限制,允许所有进程通过 ptrace 跟踪任意进程(需符合传统 Unix 权限)。开发环境、需要自由调试的场景
1受限模式:仅允许跟踪直接子进程,或拥有 CAP_SYS_PTRACE 权限的进程。默认推荐值,平衡安全与功能性
2管理员模式:仅允许拥有 CAP_SYS_PTRACE 的进程(如 root)跟踪其他进程。高安全环境(生产服务器、多用户系统)
3完全禁用:所有进程(包括 root)无法使用 ptrace极端安全需求(可能破坏调试工具功能)

具体行为分析

模式 0:经典模式

  • 行为:允许任何用户调试其权限范围内的进程。

  • 风险

    • 普通用户可调试其他用户的进程(若目标进程权限允许)。

    • 恶意进程可能注入代码或窃取数据。

  • 示例

    # 普通用户可附加到非子进程
    gdb -p <其他用户的进程PID>

模式 1:受限模式(默认)

  • 行为

    • 仅允许跟踪直接派生的子进程(如父进程调试子进程)。

    • 若需跟踪非子进程,需满足以下条件之一:

      • 具有 CAP_SYS_PTRACE 权限(如 root)。

      • 目标进程明确授权(通过 PR_SET_PTRACER 机制)。

  • 安全增强

    # 普通用户尝试附加到非子进程会失败
    $ gdb -p 1234
    ptrace: Operation not permitted.

模式 2:管理员模式

  • 行为

    • 只有 root 或拥有 CAP_SYS_PTRACE 的进程可使用 ptrace

  • 适用场景

    • 生产服务器,防止非特权用户进行调试操作。

    • 多用户系统,隔离用户间进程调试。

模式 3:完全禁用

  • 行为

    • 所有进程(包括 root)无法使用 ptrace

  • 影响

    • 调试器(如 GDB、strace)完全失效。

    • 可能影响依赖 ptrace 的系统工具(如某些性能分析工具)。


配置与管理

查看当前值

cat /proc/sys/kernel/yama/ptrace_scope
# 或
sysctl kernel.yama.ptrace_scope

临时修改

# 设为模式1(需root权限)
echo 1 | sudo tee /proc/sys/kernel/yama/ptrace_scope
# 或
sudo sysctl -w kernel.yama.ptrace_scope=1

永久生效

# 编辑 /etc/sysctl.conf 或 /etc/sysctl.d/*.conf
echo "kernel.yama.ptrace_scope = 1" | sudo tee -a /etc/sysctl.d/10-ptrace.conf
# 加载配置
sudo sysctl -p /etc/sysctl.d/10-ptrace.conf

调试场景的权限处理

非 root 用户调试非子进程

  1. 临时授权(需目标进程配合):

    // 在目标进程中调用:
    prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY, 0, 0, 0);
  2. 使用 CAP_SYS_PTRACE

    sudo setcap cap_sys_ptrace=eip /path/to/debugger

容器环境(Docker)

  • 默认行为:容器内进程的 ptrace_scope 继承自宿主机。

  • 安全建议

    # 启动容器时限制权限
    docker run --cap-drop SYS_PTRACE ...

注意事项

  1. 兼容性

    • 某些调试工具(如 stracegdb)在模式 ≥1 时可能受限。

    • 依赖 ptrace 的安全工具(如沙箱)需调整配置。

  2. 性能影响

    • 高安全模式(2/3)可能增加系统调用拦截的开销。

  3. 与 SELinux/AppArmor 的关系

    • Yama 与其它 LSM 模块协同工作,规则叠加生效。


总结

通过合理配置 /proc/sys/kernel/yama/ptrace_scope,用户可以在功能性安全性之间找到平衡:

  • 开发环境:模式 0 或 1,便于调试。

  • 生产环境:模式 1 或 2,防止恶意调试。

  • 敏感系统:模式 3,彻底禁用 ptrace(谨慎使用)。

修改前需评估对现有工具和工作流的影响,并优先通过权限管理(如 CAP_SYS_PTRACE)实现最小权限原则。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/34211.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux - 基础IO之操作与文件描述符全解析:从C语言到系统调用底层实现

目录 1.回顾c语言中所学的文件 2.提炼对文件的理解&#xff08;linux基础io第一阶段的学习&#xff09; a.在操作系统内部&#xff0c;一个进程和一个被打开的文件&#xff0c;他们到后面会变成两种对象之间的指针关系。 b.文件 属性 内容 c.在c语言中,以w的方式打开文件…

【A2DP】深入解读A2DP中通用访问配置文件(GAP)的互操作性要求

目录 一、模式支持要求 1.1 发现模式 1.2 连接模式 1.3 绑定模式 1.4 模式间依赖关系总结 1.5 注意事项 1.6 协议设计深层逻辑 二、安全机制&#xff08;Security Aspects&#xff09; 三、空闲模式操作&#xff08;Idle Mode Procedures&#xff09; 3.1 支持要求 …

python 入门教程 window 10 环境下安装pyenv

python的环境配置方法很多&#xff0c;由于python有两个大版本&#xff0c;很多时候需要切换某个固定的版本才能运行三方包&#xff0c;所以推荐使用pyenv 配置python 环境变量 pyenv 的安装 安装方法&#xff1a; Invoke-WebRequest -UseBasicParsing -Uri "https://r…

【fNIRS可视化学习1】基于NIRS-SPM进行光极可视化并计算通道坐标

一、前言 功能性近红外光谱(fNIRS)是一种无创的脑功能成像技术。在fNIRS研究中&#xff0c;光极的空间定位和通道坐标的计算至关重要。 1.光极可视化 光极可视化的重要性我就不赘述了&#xff0c;它可以直观检查probe设计的合理性&#xff0c;确认光极覆盖目标脑区&#xff0c…

Vue.js 中 class 和 style 绑定的全面解析

目录 引言 6.1 v-bind 指令 介绍 使用方法 6.2 绑定 HTML class 介绍 用法 6.3 绑定内联样式 介绍 用法 6.4 实战&#xff1a;制作消息提示框 介绍 用法 总结 引言 在Vue.js构建用户界面的宏伟蓝图里&#xff0c;样式的动态呈现与交互性的完美融合是吸引用户目光…

【红黑树】—— 我与C++的不解之缘(二十五)

前言 学习了avl树&#xff0c;现在来学习红黑树。 一、什么是红黑树 红黑树是一颗平衡二叉搜索树&#xff0c;它每一个节点增加了一个存储位表示节点的颜色&#xff0c;可以是红色或者黑色。 相比较于AVL树&#xff0c;红黑树也是一个自平衡二叉搜索树&#xff0c;但是它与AVL树…

SFT数据处理部分的思考

SFT数据及处理的业内共识 1&#xff0e;prompt的质量和多样性远重要于数据量级&#xff0c;微调一个 30 b 量级的base model只需要 10 w 量级的数据即可 参考&#xff1a;《LIMA&#xff1a;Less Is More for Alignment》 2&#xff0e;合成数据很重要&#xff01;一般需要通过…

Python(学习一)

做网站有成熟的框架像FLASK、DJANGO、TORNADO&#xff0c;写爬虫有好用到哭的REQUESTS&#xff0c;还有强大到没盆友的SCRAPY 随着NUMPY、SCIPY、MATLOTLIB等众多第三方模块的开发和完善&#xff0c;不仅支持py支持各种数学运算&#xff0c;还可以绘制高质量的2D和3D图像&…

ArcGIS Pro将有文字标注底图切换为无标注底图(在线地图图源)

今天介绍一下在ArcGIS Pro将有标注的地形底图换成无标注的底图。 大家在这项目底图时候会经常调用ArcGIS Pro自带的地形图&#xff0c;但是这个地形图自带是有注记的&#xff0c;如下图。 如何更改&#xff0c;才可以调用无文字注记的呢&#xff1f; 对于一个已经切好图的有注记…

Linux第三次练习

1、创建根目录结构中的所有的普通文件 首先在根目录下面新创建一个test目录&#xff0c;然后将查找到的普通文件新建到test目录下 2、列出所有账号的账号名 3、将/etc/passwd中内容按照冒号隔开的第三个字符从大到小排序后输出所有内容 4、列出/etc/passwd中的第20行-25行内容…

[CISCN 2022 初赛]ezpop(没成功复现)

打开在线环境可以看到&#xff1a; 记得之前做过一个类似的就是有点像照着漏洞去复现。应该可以直接在网上找到链子去打。 www.zip查看路由是 Index/test&#xff0c;然后 post 传参 a&#xff1a; exp&#xff08;参考了别的大神的wp&#xff09;&#xff1a; <?php //…

技术-NBIOT

是什么&#xff1f; 窄带物联网&#xff08;Narrow Band Internet of Things, NB-IoT&#xff09;成为万物互联网络的一个重要分支支持低功耗设备在广域网的蜂窝数据连接&#xff0c;也被叫作低功耗广域网(LPWAN)NB-IoT支持待机时间长、对网络连接要求较高设备的高效连接NB-Io…

Spring @Bean注解使用场景二

bean:最近在写一篇让Successfactors顾问都能搞明白的sso的逻辑的文章&#xff0c;所以一致在研究IAS的saml2.0的协议&#xff0c;希望用代码去解释SP、idp的一些概念&#xff0c;让顾问了解SSO与saml的关系&#xff0c;在github找代码的时候发现一些代码的调用关系很难理解&…

pip install和conda install的区别

这里写目录标题 一、什么是 Python 依赖&#xff08;Python Dependencies&#xff09;&#xff1f;1. 依赖的作用2. 如何管理 Python 依赖3. 依赖管理问题4. 依赖锁定总结 二、使用pip安装包venv隔离环境方法 1&#xff1a;使用 venv&#xff08;推荐&#xff09;创建虚拟环境激…

R语言高效数据处理-自定义EXCEL数据排版

注&#xff1a;以下代码均为实际数据处理中的笔记摘录&#xff0c;所以很零散 1、自定义excel表数据输出格式、布局 在实际数据处理中为了提升效率&#xff0c;将Excel报表交付给需求方时减少手动调整的环节很有必要 #1.1设置表头格式 header_style <- createStyle(font…

Word 小黑第4套

对应大猫41 上下日期是一起变动的&#xff0c;删掉第一个&#xff0c;第二个日期格式&#xff08;文件 -选项 -自定义功能区 -选上开发工具&#xff09; 点开发工具 -属性 选择相应的日期格式&#xff09; 修改标题样式时&#xff0c;标题三只有点标题二时才会显示 右击正文样…

酒店宾馆IPTV数字电视系统:创新宾客体验,引领智慧服务新潮流

酒店宾馆IPTV数字电视系统&#xff1a;创新宾客体验&#xff0c;引领智慧服务新潮流 北京海特伟业科技有限公司任洪卓于2025年3月15日发布 随着智慧酒店的不断发展&#xff0c;宾客对于酒店内的娱乐和信息服务需求日益多样化&#xff0c;传统的电视服务已难以满足现代宾客的高…

jupyter无法转换为PDF,HTMLnbconvert failed: Pandoc wasn‘t found.

无法转为PDF 手动下载工具 https://github.com/jgm/pandoc/releases/tag/3.6.3 似乎跟我想的不大一样&#xff0c;还有新的报错 https://nbconvert.readthedocs.io/en/latest/install.html#installing-tex 不知道下的啥玩意儿 sudo apt-get install texlive-xetex texlive-fon…

如何在 VS编译器上使用 C99规定的变长数组------使用Clang工具

VS编译器默认处理代码的工具是 MSVC&#xff0c;而MSVC工具是无法处理变长数组的&#xff0c;这个时候我们就要换一个处理代码的工具了----Clang 1 int n 9; 2 int arr[n];// 数组长度可以拟定1.打开 Visual Stdudio Intaller 2.点击修改&#xff0c;鼠标下滑找到>>使用…

vue echarts封装使用

echarts 尺寸自动调节 resize.js 柱状图 components/dashboard/lineChart.vue <template><div :class"className" :style"{height:height,width:width}" /> </template><script> import echarts from echarts require(echarts/…