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.hqwc.cn/news/91768.html

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

相关文章

R语言对综合社会调查GSS数据进行自举法bootstrap统计推断、假设检验、探索性数据分析可视化|数据分享...

全文链接&#xff1a;https://tecdat.cn/?p33514 综合社会调查&#xff08;GSS&#xff09;是由国家舆论研究中心开展的一项观察性研究。自 1972 年以来&#xff0c;GSS 一直通过收集当代社会的数据来监测社会学和态度趋势。其目的是解释态度、行为和属性的趋势和常量。从 197…

Vue2-replace属性、编程式路由导航、缓存路由组件、两个新的生命周期钩子、路由守卫、路由器工作模式

&#x1f954;&#xff1a;如果事与愿违&#xff0c;那一定是上天另有安排 更多Vue知识请点击——Vue.js VUE2-Day13 router-link的replace属性编程式路由导航1、什么是编程式路由导航2、如何编码3、使用案例示例说明 缓存路由组件两个新的生命周期钩子路由守卫1、路由元信息2、…

EXCEL中点击单元格,所在行和列都改变颜色

在日常工作中&#xff0c;尤其是办公室工作人群&#xff0c;尝尝需要处理大量的数据&#xff0c;在对数据进行修改时&#xff0c;时长发生看错行的事情&#xff0c;导致数据越改越乱&#xff0c;因此&#xff0c;我常用的一种方法就是选中单元格时&#xff0c;所在行、列标记为…

PHP自己的框架cookie()使用(完善篇七)

1、PHP自己的框架cookie() 2、cookie类&#xff08;CookieBase.php&#xff09; <?php class CookieBase {/*** 设置cookie*/public static function set($name, $value, $expire 3600, $path , $domain , $secure false, $httponly false) {setcookie($name, $valu…

HP惠普星15青春版/惠普小欧笔记本电脑15s-du1008tx原装出厂Win11系统

适用型号&#xff1a;15s-du1007tx、15s-du1008tx、15s-du1009tx、15s-du1010tx、15s-du1011tx、15s-du1012tx、15s-du1013tx 自带所有驱动、出厂主题壁纸LOGO、Office办公软件、惠普电脑管家等预装程序 所需要工具&#xff1a;32G或以上的U盘 文件格式&#xff1a;ISO 文件大…

如何使用Unity制作一个国际象棋

LinnoChess1.0 该项目旨在做一些Unity小游戏项目开发来练练手 如果有更新建议请私信RWLinno 项目地址&#xff1a;https://github.com/RWLinno/LinnoChess 目前效果 能够正常下棋&#xff1b;能够编辑棋盘&#xff1b;能够SL棋局&#xff1b;能够记录棋谱&#xff1b;能够显…

代价高昂的 IT 错误:识别并避免供应商锁定

陷入不提供所需服务的云服务器合同中可能会非常痛苦、令人沮丧且成本高昂。 供应商锁定是提供商难以切换的地方&#xff0c;这意味着企业迁移到新供应商的成本太高、破坏性太大或耗时。 这使得公司受到供应商的摆布&#xff0c;尽管该服务可能无法提供他们所需的可靠性或可扩…

微信小程序scroll-view隐藏滚动条参数不生效问题

如题&#xff0c;先来看看问题是怎么出现的。 先看文档如何隐藏滚动条&#xff1a; 再根据文档实现wxml文件&#xff1a; <scroll-view show-scrollbar"{{false}}" enhanced><view wx:for"{{1000}}">11111</view> </scroll-view>…

实现基于栈的表达式求值计算器(难度4/10)

本作业主要考察&#xff1a;解释器模式的实现思想/栈结构在表达式求值方面的绝对优势 C数据结构与算法夯实基础作业列表 通过栈的应用&#xff0c;理解特定领域设计的关键作用&#xff0c;给大家眼前一亮的感觉。深刻理解计算机语言和人类语言完美结合的杰作。是作业中的上等…

linux免密登录报错 Bad owner or permissions on /etc/ssh/ssh_config.d/05-redhat.conf

问题&#xff1a;权限不对的 解决&#xff1a; 1.检查文件的所有者和权限。 确保文件的所有者是正确的。 运行以下命令来确定文件的所有者和权限&#xff1a; ls -l /etc/ssh/ssh_config.d/05-redhat.conf 通常情况下&#xff0c;SSH配置文件应该属于root用户。如果所有者不是…

【Leetcode】130.被围绕的区域

一、题目 1、题目描述 给你一个 m x n 的矩阵 board ,由若干字符 X 和 O ,找到所有被 X 围绕的区域,并将这些区域里所有的 O 用 X 填充。 示例1: 输入:board = [[“X”,“X”,“X”,“X”],[“X”,“O”,“O”,“X”],[“X”,“X”,“O”,“X”],[“X”,“O”,“X”,“…

任意文件读取

文章目录 渗透测试漏洞原理任意文件读取1. 任意文件读取概述1.1 漏洞成因1.2 漏洞危害1.3 漏洞分类1.4 任意文件读取1.4.1 文件读取1.4.2 任意文件读取1.4.3 权限问题 1.5 任意文件下载1.5.1 一般情况1.5.2 PHP实现1.5.3 任意文件下载 2. 任意文件读取攻防2.1 路径过滤2.1.1 过…