Linux土遁术之监测监测进程打开文件

分析问题过程中,追踪进程打开的文件可以在许多不同情况下有用,体现在以下几个方面:

故障排除和调试: 当程序出现问题、崩溃或异常行为时,追踪进程打开的文件可以帮助您找出问题的根本原因。这有助于快速定位错误,尤其是在访问文件时发生的错误。

性能分析和优化: 了解进程打开了哪些文件可以帮助您分析程序的性能问题。如果程序频繁打开和关闭文件,可能会导致性能下降。通过追踪文件操作,您可以识别性能瓶颈,从而采取相应的优化措施。

权限和安全审计: 在安全方面,追踪进程打开的文件可以帮助您监控和审计系统上的文件访问。这有助于检测异常活动、追踪潜在的安全漏洞以及识别潜在的威胁。您可以确保只有授权的进程可以访问特定的文件。

授权和访问控制: 如果您想要确保某些文件只能由特定的进程或用户访问,可以追踪进程打开的文件,并根据需要执行授权和访问控制。

资源使用和泄漏检测: 对于服务器或多租户环境,追踪进程打开的文件可以帮助您监控资源的使用情况。这有助于识别资源泄漏、滥用或不必要的文件操作,以便进行适当的资源管理。

合规性和法律要求: 在一些情况下,您可能需要监控特定进程的文件访问,以满足法律、合规性或监管要求。追踪进程打开的文件可以帮助您确保满足相关要求。

总之,追踪进程打开的文件可以帮助您更好地理解程序的行为,从而更好地管理、优化和保护系统。不同的使用情况可能需要不同的方法和工具来实现这一目标。

在 Linux 中,要追踪进程打开了哪些文件,您可以使用工具来监视系统调用或使用调试工具。以下是一些常用的方法:

strace:
strace 是一个命令行工具,可以跟踪和记录进程的系统调用。您可以使用以下命令来跟踪一个进程的系统调用,并查看它打开了哪些文件:
strace -e open,openat <command>
command>是要执行的命令,-e open,openat 指定要跟踪的系统调用类型。

lsof:
lsof(List Open Files)是一个用于显示打开文件的命令行工具。您可以使用以下命令来查看指定进程打开了哪些文件,命令如下:
lsof -p <pid>
pid是要查询的进程的进程 ID。

使用 ptrace 调试工具:
如果想要更底层的控制,可以使用 ptrace 调试工具来追踪进程的行为。可以编写一个小的调试程序,使用 ptrace 跟踪系统调用并记录 open 系统调用的参数。

以上这些方法都可以帮助追踪进程打开了哪些文件,具体使用哪种方法取决于问题的需求和环境,这里介绍另外一种非侵入式的调试方法,开发一个内核模块,利用内核提供的KPROBE机制探测OPEN系统调用,得到被打开的文件名字,这个方法和PTRACE思想类似,但前者是非侵入式调试,不会影响被探测程序。

模块代码:

#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/kprobes.h>static char file_name[256];static int entry_handler(struct kprobe *p, struct pt_regs *regs)
{const char __user *filename = (const char __user *)regs->si;copy_from_user(file_name, filename, sizeof(file_name));file_name[sizeof(file_name) - 1] = '\0';if(strstr(file_name, "fkwq")) {pr_info("comm %s Open syscall intercepted. File name: %s\n", current->comm, file_name);}return 0;
}static struct kprobe kp = {.symbol_name = "do_sys_open",.pre_handler = entry_handler,
};static int __init kprobe_init(void)
{int ret = register_kprobe(&kp);if (ret < 0) {pr_err("Failed to register kprobe: %d\n", ret);return ret;}pr_info("Kprobe registered\n");return 0;
}static void __exit kprobe_exit(void)
{unregister_kprobe(&kp);pr_info("Kprobe unregistered\n");
}module_init(kprobe_init);
module_exit(kprobe_exit);
MODULE_LICENSE("GPL");

Makefile:

ifneq ($(KERNELRELEASE),)
CFLAGS_seqfile.o:=-I$(src)
obj-m:=probename.o
else
KERNELDIR:=/lib/modules/$(shell uname -r)/build
PWD:=$(shell pwd)
all:$(MAKE) -C $(KERNELDIR) M=$(PWD) modulesclean:rm -rf *.o *.mod.c *.mod.o *.ko *.symvers *.mod .*.cmd *.order
format:astyle --options=linux.astyle *.[ch]
endif

测试过程中,监测打开的fkwq.txt文件,程序中对文件名进行了过滤,否则打印文件过多,测试界面会刷屏。

监控modprobe打开的文件路径:/lib/modules/5.4.0-150-generic/kernel/arch/x86/kvm/kvm.ko


结束

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

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

相关文章

手机盖板IR油墨透光率检测仪T03

手机盖板作为手机最外层玻璃面板&#xff0c;其加工一般有落料、倒边、抛光、镀膜、丝印等多道加工工序组成&#xff0c;其中任何一个工序出现差错&#xff0c;都有可能导致手机盖板产生缺陷&#xff0c;例如漏油、透光、IR孔不良、视窗划伤、油墨区划伤、內污、边花等&#xf…

【java安全】FastJson反序列化漏洞浅析

文章目录 【java安全】FastJson反序列化漏洞浅析0x00.前言0x01.FastJson概述0x02.FastJson使用序列化与反序列化 0x03.反序列化漏洞0x04.漏洞触发条件0x05.漏洞攻击方式JdbcRowSetImpl利用链TemplatesImpl利用链**漏洞版本**POC漏洞分析 【java安全】FastJson反序列化漏洞浅析 …

Ansible 自动化运维工具的使用

目录 一、Ansible简介 Ansible 总结 二、Ansible 的安装和使用 下载 使用 三、Ansible命令和模块 1.命令格式 2.命令行模块 &#xff08;1&#xff09;command 模块 &#xff08;2&#xff09;shell 模块 &#xff08;3&#xff09;cron 模块 present添加 absent删…

高速公路自动驾驶汽车超车控制方法研究

目录 摘要 ............................................................................................................ I Abstract ...................................................................................................... II 目录 ...............…

图转超图 Graph convert toHypergraph

图转超图 DHT 介绍那么它有啥用呢&#xff1f; 这个实在太好玩了&#xff0c;参考的这个论文&#xff1a; EHGNN 采用的方法叫 Dual Hypergraph Transformation (DHT)&#xff0c;主要就是把一个 graph 转为 hypergraph DHT 介绍 如何将 graph 转 hypergraph 的呢&#xff1…

企业智能知识管理在线工具语雀、helplook、石墨文档、Baklib怎么样?

语雀、helplook、石墨文档和Baklib都是企业智能知识管理的在线工具&#xff0c;它们都提供了一系列功能来帮助企业管理和共享知识。下面我将对这些工具进行详细的介绍和评价。 语雀&#xff1a; 语雀是一款功能强大的在线知识管理工具&#xff0c;它提供了丰富的功能和优秀的…

如何检测勒索软件攻击

什么是勒索软件 勒索软件又称勒索病毒&#xff0c;是一种特殊的恶意软件&#xff0c;又被归类为“阻断访问式攻击”&#xff08;denial-of-access attack&#xff09;&#xff0c;与其他病毒最大的不同在于攻击方法以及中毒方式。 攻击方法&#xff1a;攻击它采用技术手段限制…

unity 之 如何获取父物体与子物体

文章目录 获取父物体获取子物体 获取父物体 在Unity中&#xff0c;你可以使用Transform组件的属性来获取对象的父物体。以下是在C#脚本中如何获取父物体的示例代码&#xff1a; using UnityEngine;public class GetParentExample : MonoBehaviour {void Start(){// 获取当前物…

三、mycat分库分表

第五章 分库分表 一个数据库由很多表的构成&#xff0c;每个表对应着不同的业务&#xff0c;垂直切分是指按照业 务将表进行分类&#xff0c;分布到不同 的数据库上面&#xff0c;这样也就将数据或者说压力分担到不同 的库上面&#xff0c;如下图&#xff1a; 系统被切分成了&…

解决抖音semi-ui的Input无法获取到onChange事件

最近在使用semi-ui框架的Input实现一个上传文件功能时遇到了坑&#xff0c;就是无法获取到onChange事件&#xff0c;通过console查看只是拿到了一个文件名。但若是把<Input>换成原生的<input>&#xff0c;就可以正常获取到事件。仔细看了下官方文档&#xff0c;发现…

巨人互动|游戏出海游戏出海的趋势如何

随着全球游戏市场的不断扩大和消费者需求的多元化&#xff0c;游戏出海作为游戏行业的重要战略之一&#xff0c;正面临着新的发展趋势。本文小编将讲讲游戏出海的趋势&#xff0c;探讨一下未来游戏出海的发展方向与前景。 巨人互动|游戏出海&2023国内游戏厂商加快“出海”发…

高效利用隧道代理实现无阻塞数据采集

在当今信息时代&#xff0c;大量的有价值数据分散于各个网站和平台。然而&#xff0c;许多网站对爬虫程序进行限制或封禁&#xff0c;使得传统方式下的数据采集变得困难重重。本文将向您介绍如何通过使用隧道代理来解决这一问题&#xff0c;并帮助您成为一名高效、顺畅的数据采…

postgresql类型转换函数

postgresql类型转换函数 简介CAST 函数to_date 函数to_timestamp 函数to_char 函数to_number 函数隐式类型转换 简介 类型转换函数用于将数据从一种类型转换为另一种类型。 CAST 函数 CAST ( expr AS data_type )函数用于将 expr 转换为 data_type 数据类型&#xff1b;Post…

SpringBoot—日志

目录 日志使用日志日志级别设置日志级别设置分组指定日志文件路径日志切割归档使用第三方日志框架log4j2配置文件【分级存储】logback配置文件【分级存储】 实例代码 日志 使用日志 给controller添加日志信息 要给controller类上添加Slf4j注解&#xff0c;然后使用log.info(…

根据身高重建队列【贪心算法】

根据身高重建队列 假设有打乱顺序的一群人站成一个队列&#xff0c;数组 people 表示队列中一些人的属性&#xff08;不一定按顺序&#xff09;。每个 people[i] [hi, ki] 表示第 i 个人的身高为 hi &#xff0c;前面 正好 有 ki 个身高大于或等于 hi 的人。 请你重新构造并返…

公网中Linux系统下Redis使用注意事项以及被pnscan病毒攻击的经过

一次惨痛的教训&#xff1a;被pnscan病毒攻击的经过&#xff08;公网中Linux系统下Redis使用注意事项&#xff09; 0.案发情况pnscan病毒感染惨状&#xff1a;>>提示<< 1.案发原因2.排查过程简单排查之后&#xff0c;发现啥都做不了。先百度到了如下文章&#xff1…

卡尔曼滤波

第一章知识点回顾 表1变量符号对照表 1.1数学期望 数学期望表示为每次可能的结果乘上结果概率的总和。 1.1.1 数学期望的性质 假设常数为 C &#xff0c;随机变量 X 和 Y &#xff0c;则 1.2 方差&#xff08;variance&#xff09; 概率论中和统计中的方差反映单个&…

本地电脑搭建Plex私人影音云盘教程,内网穿透实现远程访问

文章目录 1.前言2. Plex网站搭建2.1 Plex下载和安装2.2 Plex网页测试2.3 cpolar的安装和注册 3. 本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语6 总结 1.前言 用手机或者平板电脑看视频&#xff0c;已经算是生活中稀松平常的场景了&#xff0c;特…

目标检测笔记(十二):如何通过界面化操作YOLOv5完成数据集的自动标注

文章目录 一、意义二、修改源码获取三、自动标注前期准备四、开始自动标注五、可视化标注效果六、XML转换TXT 一、意义 通过界面化操作YOLOv5完成数据集的自动标注的意义在于简化数据标注的流程&#xff0c;提高标注的效率和准确性。 传统的数据集标注通常需要手动绘制边界框…

C语言每日一练-------Day(9)

本专栏为c语言练习专栏&#xff0c;适合刚刚学完c语言的初学者。本专栏每天会不定时更新&#xff0c;通过每天练习&#xff0c;进一步对c语言的重难点知识进行更深入的学习。 今日练习题关键字&#xff1a;字符个数统计 多数元素 投票法 &#x1f493;博主csdn个人主页&#xf…