拦截文件系统系统调用

2024-01-08

我正在编写一个应用程序,我需要拦截一些文件系统系统调用,例如。取消链接。我想保存一些文件,比如 abc.txt。如果用户删除该文件,那么我需要将其复制到其他地方。所以我需要在删除 abc 之前取消链接来调用我的代码,以便我可以保存它。我已经完成了与拦截系统调用相关的线程,但是像 LD_PRELOAD 这样的方法在我的情况下不起作用,因为我希望它是安全的并在内核中实现,所以这个方法不会有用。 inotify 在事件发生后发出通知,因此我无法保存它。你能建议任何这样的方法吗?我想在内核模块中实现它,而不是修改内核代码本身。 Graham Lee建议的另一种方法,我曾想过这种方法,但它有一些问题,我需要所有文件的硬链接镜像,它不消耗空间,但仍然可能有问题,因为我必须重复镜像驱动器以保持镜像最新日期,它也不能跨分区工作,并且在不支持链接的分区上工作,所以我想要一个解决方案,通过它我可以将挂钩附加到文件/目录,然后监视更改而不是重复扫描。 我还想添加对写入修改文件的支持,我无法使用硬链接。 我想通过替换系统调用来拦截系统调用,但我在 linux > 3.0 中找不到任何执行此操作的方法。请建议一些方法来做到这一点。


至于挂接到内核并拦截系统调用,这是我在编写的安全模块中所做的事情:

https://github.com/cormander/tpe-lkm https://github.com/cormander/tpe-lkm

查看hijacks.c和symbols.c的代码;它们的使用方式是hijack_syscallssecurity.c 内部的函数我还没有在 linux > 3.0 上尝试过这个,但是相同的基本概念应该仍然有效。

这有点棘手,您可能必须编写大量内核代码才能在取消链接之前进行文件复制,但这里是可能的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

拦截文件系统系统调用 的相关文章

  • GLIBCXX_3.4.26 未找到在 BeagleBone 上运行交叉编译的程序

    我有以下程序 include
  • 应用程序无缘无故地被杀死。怀疑 BSS 高。如何调试呢?

    我已经在CentOs6 6中成功运行我的应用程序 最近 硬件 主板和内存 更新了 我的应用程序现在毫无理由地被杀死 root localhost PktBlaster PktBlaster Killed 文件和 ldd 输出 root lo
  • nginx 上的多个网站和可用网站

    通过 nginx 的基本安装 您的sites available文件夹只有一个文件 default 怎么样sites available文件夹的工作原理以及如何使用它来托管多个 单独的 网站 只是为了添加另一种方法 您可以为您托管的每个虚拟
  • gdb查找行号的内存地址

    假设我已将 gdb 附加到一个进程 并且在其内存布局中有一个文件和行号 我想要其内存地址 如何获取文件x中第n行的内存地址 这是在 Linux x86 上 gdb info line test c 56 Line 56 of test c
  • 大多数 Linux 系统头文件与 C++ 兼容吗?

    大多数 Linux 系统头文件 API C 兼容吗 今天我试图做这样的事情 include
  • 我可以从命令行打印 html 文件(带有图像、css)吗?

    我想从脚本中打印带有图像的样式化 html 页面 谁能建议一个开源解决方案 我使用的是 Linux Ubuntu 8 04 但也对其他操作系统的解决方案感兴趣 你可以给html2ps http user it uu se jan html2
  • Linux中的定时器类

    我需要一个计时器来以相对较低的分辨率执行回调 在 Linux 中实现此类 C 计时器类的最佳方法是什么 有我可以使用的库吗 如果您在框架 Glib Qt Wx 内编写 那么您已经拥有一个具有定时回调功能的事件循环 我认为情况并非如此 如果您
  • 在哪里可以找到并安装 pygame 的依赖项?

    我对 Linux 比较陌生 正在尝试安装 python 的 pygame 开发环境 当我运行 setup py 时 它说我需要安装以下依赖项 我找到并安装了其中之一 SDL 然而 其他人则更加难以捉摸 Hunting dependencie
  • Linux 中的动态环境变量?

    Linux 中是否可以通过某种方式拥有动态环境变量 我有一个网络服务器 网站遵循以下布局 site qa production 我想要一个环境变量 例如 APPLICATION ENV 当我在 qa 目录中时设置为 qa 当我在生产目录中时
  • 如何有效截断文件头?

    大家都知道truncate file size 函数 通过截断文件尾部将文件大小更改为给定大小 但是如何做同样的事情 只截断文件的尾部和头部呢 通常 您必须重写整个文件 最简单的方法是跳过前几个字节 将其他所有内容复制到临时文件中 并在完成
  • 无法使用 wget 在 CentOS 机器上安装 oracle jdk

    我想在CentOS上安装oracle java jdk 8 我无法安装 java jdk 因为当我尝试使用命令安装 java jdk 时 root ADARSH PROD1 wget no cookies no check certific
  • 两种情况或 if 哪个更快? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我必须制作一个 非常 轻的脚本 它将接受用户的选项并调用脚本中的函数来执行一些任务 现在我可以使用 IF 和 CASE 选项 但我想知道两
  • 安装J语言的JQt IDE,出现错误

    我一直按照这里的说明进行操作 http code jsoftware com wiki System Installation Linux http code jsoftware com wiki System Installation L
  • 使用 sh 运行 bash 脚本

    我有 bash 脚本 它需要 bash 另一个人尝试运行它 sh script name sh 它失败了 因为 sh 是他的发行版中 dash 的符号链接 ls la bin sh lrwxrwxrwx 1 root root 4 Aug
  • iptables通过注释删除特定规则

    我需要删除一些具有相同评论的规则 例如 我有带有 comment test it 的规则 所以我可以像这样获得它们的列表 sudo iptables t nat L grep test it 但是我怎样才能删除所有带有注释 测试它 的 PR
  • 有谁知道在哪里定义硬件、版本和序列号。 /proc/cpuinfo 的字段?

    我想确保我的 proc cpuinfo 是准确的 目前它输出 Hardware am335xevm Revision 0000 Serial 0000000000000000 我可以在代码中的哪里更改它以给出实际值 这取决于 Linux 的
  • 跨平台 C++ 文件系统观察器

    我正在寻找一个跨平台文件系统观察器 类似于文件系统观察者 http msdn microsoft com en us library system io filesystemwatcher aspx NET 中的类 因为它是守护进程 服务
  • ftrace:仅打印trace_printk()的输出

    是否可以只转储trace printk 输出于trace文件 我的意思是过滤掉函数跟踪器 或任何其他跟踪器 中的所有函数 一般来说 您可以在选项目录中关闭选项 sys kernel debug tracing options Use ls显
  • Linux 上有关 getBounds() 和 setBounds() 的 bug_id=4806603 的解决方法?

    在 Linux 平台上 Frame getBounds 和 Frame setBounds 的工作方式不一致 这在 2003 年就已经有报道了 请参见此处 http bugs java com bugdatabase view bug do
  • 如何使用 GOPATH 的 Samba 服务器位置?

    我正在尝试将 GOPATH 设置为共享网络文件夹 当我进入 export GOPATH smb path to shared folder I get go GOPATH entry is relative must be absolute

随机推荐

  • Objective-C 中强弱的区别

    两者有什么区别strong and weak in property对象指针的声明 另外 什么是nonatomic mean 考虑气球方面的强引用和弱引用可能会有所帮助 只要至少有一个人抓住气球上的一根绳子 气球就不会飞走 持有字符串的人数
  • 获取 30 天前的日期和时间

    我想计算从现在 例如 14 月 30 日 23 06 到 30 天前 例如 14 月 1 日 23 06 的 php 过去 30 天时间段 我写了这篇文章 其中当前日期时间在 d1 中 过去 30 天的日期时间在 d2 中 但不知何故我没有
  • 整数到字节的转换

    假设我有一个整数 13941412 我希望将其分成字节 该数字实际上是 0x00bbggrr 形式的颜色 你会怎么做 在 c 中 您可以将数字转换为 BYTE 然后移动位 Python 中如何转换为字节 使用按位数学运算符 字节 已经存在
  • Spark的HiveContext内部是如何工作的?

    我是 Spark 新手 我发现使用HiveContext我们可以连接到hive并运行HiveQLs 我运行它并且它起作用了 我的疑问是Spark做到了spark jobs 也就是说 它使用HiveContext仅用于从HDFS访问相应的hi
  • 使用 Gulp 读取、重建和替换文件中的内容块的最有效方法是什么?

    我正在创建一个可以读取任何文件 php jsp html 等 定位块标签并根据块标签中的信息进行替换的系统 我将写入我的文件的代码 testObject name jonathan number 3 male true 所需更换 h1 Jo
  • 在 Visual Studio 中,我可以在调试时禁用对应用程序进行签名吗?

    在 Visual Studio 的项目属性 gt 签名选项卡中 我已使用代码签名证书对我的项目进行了签名 然而 在我的团队中 我是唯一拥有代码签名证书的人 即使我们处于多开发人员环境中 当其他开发人员尝试 开始调试 时 他们会收到以下消息
  • 编译错误 - Groovy 和 Lombok

    这是我的 Maven 命令 mvn clean compile test compile test for 这个项目 https github com prystasj lombok groovy example 但我面临着 错误 不再有标
  • 打开自定义 UITableViewCell 时在溢出菜单中显示/隐藏辅助功能元素

    我正在自定义中实现辅助功能UITableViewCell班级 我有一个相当简单的溢出菜单 里面有几个按钮 这些按钮是隐藏的 直到按下省略号按钮滑动打开并关闭溢出 在我的单元格的初始化程序中 我设置accessibilityElementsH
  • L 系统信息

    我即将启动一个大学项目 为现有项目建造一座程序城市 我想知道你们中是否有人有过编写 L Systems 的经验 并且知道我应该从哪里开始 在使用程序方法 Perlin 噪声和 fBm 之前我已经做了一些工作 所以我得到了分形意义上的 L 系
  • 使用嵌入式 Jetty 提供静态文件

    我正在尝试构建一个带有嵌入式 Jetty 的简单演示应用程序 该应用程序从 html 目录 当前工作目录的子目录 提供静态文件 这个想法是 包含演示 jar 和内容的目录可以移动到新位置并且仍然可以工作 我已经尝试过以下变体 但我不断收到
  • Dart 编辑器和 SDK(解压下载后)通常安装/移动到的文件夹是什么?

    Dart 编辑器和 SDK 解压下载后 通常安装 移动到的文件夹是什么 Applications 请遵循https dart dev get dart https dart dev get dart brew tap dart lang d
  • 查找活动的参加者

    我正在尝试显示 公共 谷歌日历中的事件 我的要求是获取与会者的数量 不一定是与会者的姓名 但是 当我使用日历 API 使用 API 密钥和 CalendarID 获取事件时 该活动缺少提到的整个与会者部分here https develop
  • grep R中列表内向量的精确匹配

    我有一个这样的列表 map tmp lt list ABC c EGF HIJ c KML ABC IOP SIN KMLLL gt grep ABC map tmp 1 1 3 gt grep ABC map tmp 1 1 by usi
  • 为什么 SignalProducer 不返回信号?

    我觉得我理解了 ReactiveCocoa 的所有基本组件 概念上 通过理解如何将所有部分连接在一起仍然有点令人困惑 例如 在阅读了有关 Signal 的内容后 我完全期望 SignalProducer 只有一个返回 Signal 的 st
  • apple/swift 中的 Swift 函数对象包装器

    看完之后 https github com rodionovd SWRoute wiki Function hooking in Swift https github com rodionovd SWRoute wiki Function
  • 自定义 ViewCell Xamarin Tableview C# 中的按钮

    再次期待您的帮助 我试图让最右侧的按钮能够删除表视图控件中的行 现在他们现在知道他们在哪一行 但我无法将此信息连接到父级 表视图中填充有自定义视单元 自定义视图单元格包含两个不同的选择器 两个输入字段和一个按钮 我还没有找到更干净的方法来执
  • NSFileManager 创建目录错误 518 NSFileWriteUnsupportedSchemeError

    我试图创建一个目录 NSError error nil NSString BIDirectory NSSearchPathForDirectoriesInDomains NSCachesDirectory NSUserDomainMask
  • Win32 - 从标准输入读取超时

    我正在尝试做一些我认为应该很简单的事情 从标准输入进行阻塞读取 但如果没有可用数据 则在指定的时间间隔后超时 在 Unix 世界中这很简单select 但这在 Windows 中不起作用 因为stdin不是插座 不创建额外线程等的下一个最简
  • 为我的第一个组件编写一个玩笑测试

    我刚刚写完第一篇Reactjs组件 我准备编写一些测试 我使用material ui s Table and Toggle 我读到jest and enzyme但我觉得我还缺少一些东西 我的组件如下所示 简化 export default
  • 拦截文件系统系统调用

    我正在编写一个应用程序 我需要拦截一些文件系统系统调用 例如 取消链接 我想保存一些文件 比如 abc txt 如果用户删除该文件 那么我需要将其复制到其他地方 所以我需要在删除 abc 之前取消链接来调用我的代码 以便我可以保存它 我已经