Linux保护文件实现,Linux完整性保护机制模块实现分析(1)

2023-11-10

原标题:Linux完整性保护机制模块实现分析(1)

2 详细分析2.1 模块功能描述

文件系统完整性模块包含四种机制:监控磁盘机制、同步机制、检查修复文件系统机制、监视文件系统机制。

1.监控磁盘机制主要由statfs_by_dentry()、vfs_statfs()、user_statfs()、fd_statfs()、do_statfs_nativ()函数来支撑他们之间的关系,如下图:

228f28c6fddd019403a87c470e7ba173.png

图2-1:监控磁盘机制函数间调用图

图中sys_statfs()、sys_fstatfs()、sys_ustat()分别为监控磁盘机制的系统调用,它们调用函数的功能如下:

statfs_by_dentry:目录项在磁盘上的相关信息。

vfs_statfs():在虚拟文件系统的磁盘相关信息。

user_statfs():用户使用磁盘的相关信息。

fd_statfs():文件在磁盘上的相关信息。

do_statfs_native():获取磁盘的相关信息,并拷贝到用户态。

copy_to_user():将信息拷贝到指定的用户路径。

user_path_at():获得指定的用户路径。

user_path_put():释放指定的用户路径。

2.同步机制的主要支撑函数有:__sync_filesystem()、do_sync_work()、sync_one_sb()、sync_inode_sb()、writeback_inodes_sb()等。

ab9af1b1352572026bbf2c51841a6a34.png

图2-2:同步机制函数之间调用图

从图2-2可以看出无论是数据完整性同步还是刷出同步最后都要调用函数wb_writeback()来建立一个回写的工作。主要调用的函数功能如下:

emergency_sync():紧急同步,调用该函数后内存会立刻分配空间进行同步操作。

do_sync_work():进行了两次同步,以减少可能跳过的一些数据,因为有些数据可能被暂时锁定在inode/page中。

sys_sync():系统调用函数,完全同步即同步所有的数据,该操作会比较费时。

sync_filesystems():同步所有的数据和文件系统。

sync_one_sb():同步一个超级块并调用__sync_filesystem实现。

sys_syncfs():同步一个超级块。

sync_filesystem():写出并等待所有脏数据和对应的超级块,文件系统数据以及底层块设备并获得超级块锁。

__sync_filesystem():完成文件系统的同步工作,使文件系统的数据元素与磁盘上的文件系统同步。

sync_inode_sb():该函数回写并且等待对应超级块的所有脏inode。

writeback_inodes_sb():立即回写给定超级块对应的的脏inode,不进行等待操作。

writeback_inodes_sb_nr():回写给定超级块对应的脏inode。

wb_writeback():建立回写工作。

__writeback_single_inode():回写单个的inode。

write_inode():根据指定的inode地址进行回写操作。

3.文件系统监视机制在内核中的实现有:dnotify、inotify、fsnotify,它们都为用户提供了接口,但是具体的实现是由fsnotify框架来实现的,如图2-3所示:

10a85ad9683e753283e1cc64328a04d3.png

图2-3:fsnotify的框架调用图

fsnotify_event():文件系统发生的具体的变化,比如文件的打开事件、读写事件、删除事件等等,在具体事件发生时创建该结构的实例。

fsnotify_mark():用户创建的文件系统监视,该结构实例是对文件或目录打做的一个标记,该文件或目录的某些变化将受到fsnotify机制的监视。监视实例以目录为组织单位管理,一个目录下的所有的文件监视实例的链表被嵌入该目录对应的索引节点结构中。

fsnotify_group():处理事件的策略,用户每创建一个对文件或目录的监视mark实例,必须指定一个fsnotify_group类型的实例group,在该文件发生用户关心的某些变化(即发生了某些event)时,将会调用fsnotify_group指定的事件处理函数进行处理。

责任编辑:

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

Linux保护文件实现,Linux完整性保护机制模块实现分析(1) 的相关文章

  • elastic-job 执行原理

    Elastic Job执行原理 1 如果只有一个分片的情况下 就是和原生的quartz一样的 就是所有的任务都在一台机器上面执行 2 如果有两个分片的情况下 然后5个job在两台机器上面执行 机器 machine1 machine2 job
  • 1896-2021历届奥运会奖牌榜动态排序(Matplotlib图表动画)

    摘 要 在制作动态排序动画之前 我们看一下数据的整理情况 a 对第1 种大部分数据的情况 先爬取下来 输出到excel 1 b 对第2 种小部分数据的情况 也先爬取下来 输出到另一个excel 2 c 对第3 种个别的 还有第31 32届的
  • 合适新手入门的串口屏学习分享

    串口屏学习分享 一 串口屏简单介绍 二 编辑界面的详细介绍 三 实战演练 制作串口屏键盘 1 准备工作 2 开始 四 总结 一 串口屏简单介绍 串口是我们在学习编程 学习单片机时经常需要的 本人就是在学习32单片机时需要用到 所以才深入了解
  • 计算机怎么消除用户密码,电脑开机设置了密码要怎么删除

    很多人的电脑都设置了开机密码 但每次开机都要输入也会觉得麻烦 怎么删除开机密码呢 下面由小编为大家整理了的方法步骤 希望对大家有帮助 电脑删除开机密码的方法和步骤如下 一 如果记得自己设置的密码 进行以下操作 1打开 我的电脑 在左则找到
  • Android常见的分辨率

    1 1 手机常见分辨率 4 3 VGA 640 480 Video Graphics Array QVGA 320 240 Quarter VGA HVGA 480 320 Half size VGA SVGA 800 600 Super
  • 线段检测M-LSD 已开源

    其中 M LSD tiny最快能以56 8FPS和48 6FPS的速度在手机上实时运行 没错 现在AI在手机上给家具直线描边的速度 可能比你还快 网页版在线demo 为了方便效果展示 作者们还推出了一个网页版demo 基于Python的fl
  • unity安卓平台多摄像机显示黑屏问题

    问题 用Unity2019 2 0打包安卓平台的项目 在多摄像机显示的时候 老是会只渲染最顶层的摄像机 低渲染层级的摄像机不显示 解决方案 我先升级了Android SDK的版本 API版本升级到了29 然后把项目打包质量降低 然后打包 摄
  • openssl安装与使用

    文章目录 1 OpenSSL简介 2 OpenSSL安装 3 加密技术介绍 4 openssl 命令 4 1摘要命令 4 2对称加密命令 4 3非对称加密命令 4 3 1生成私钥 4 3 2提取公钥 4 3 3利用公钥加密 私钥解密数据 4
  • ECCV 2020《Linguistic Structure Guided Context Modeling for Referring Image Segmentation》论文笔记

    目录 简介 动机 贡献 方法 实验 简介 本文出自北航刘偲老师colab 使用语言结构引导上下文建模 用于Referring Image Segmentation 下载链接 动机 解决Referring Image Segmentation
  • docker-compose 运行hadoop

    参考网址 https github com big data europe docker hadoop 下载hadoop镜像 可以在github上自己手动构建hadoop镜像 也可以从dockerhup上下载 dockerhup上已经与该g
  • C语言注释风格(函数、功能、输入、输出、返回)

    C语言编程规范 注释 规则 1 一般情况下 源程序有效注释量必须在20 以上 说明 注释的原则是有助于对程序的阅读理解 在该加的地方都加了 注释不宜太多也不能太少 注释语言必须准确 易懂 简洁 2 说明性文件 如头文件 h文件 inc文件
  • yolov5 FPN 与 PAN的结构与作用

    在卷积神经网络过程中 网络层数越深 目标的特征信息就越强 模型对目标的预测就更好 但同时也会使得目标的位置信息越来越弱 并且在不断的卷积过程中 对小目标的信息容易造成损失 因此 需要进行不同尺度的预测 YOLOv5 采用 FPN 和 PAN
  • adamax参数_Adamax优化器

    Adamax是Adam的一种变体 此方法对学习率的上限提供了一个更简单的范围 更多详细的基本内容 请参照词条Adam 在Adam中 单个权重的更新规则是将其梯度与当前和过去梯度的L 2范数 标量 成反比例缩放 而作者又将基于L 2范数的更新
  • Linux提权备忘录

    如果不是因为真的喜欢你 我纠缠你干嘛 我又何必那么卑微 那么不堪 甚至不停修改自己的底线 到最后变得一文不值 网易云热评 一 判断是否为虚拟机 cat proc scsi scsi dmesg grep i vir w who 查询目前登录
  • Webpack5资源配置(三)

    总述 wepack资源配置了四类资源加载除了js以外的配置资源 分别为asset recource资源 asset inline资源 asset source资源 asset通用资源类型 接下来 将配合前期webpack学习 系统的对以上四
  • MEMCACHE未授权访问漏洞利用及修复

    memcache是国外社区网站Live Journal的开发团队开发的高性能的分布式内存缓存服务器 一般的使用目的是 通过缓存数据库查询结果 减少数据库访问次数 以提高动态Web应用的速度 提高扩展性 memcache的默认端口是11211
  • LeeCode精选100题-【两数相加】-1

    这里写自定义目录标题 题干 思路 1 暴力枚举 这种没啥好说的 直接双层循环就可以 时间复杂度为O n 2 空间复杂度为O n 2 借助HashMap 两数想相加 题干 给定一个整数数组 nums 和一个整数目标值 target 请你在该数
  • Nginx 各种反向代理方式

    Nginx 反向代理 代理 http 实现负载均衡 nginx 代理 https nginx 代理tcp nginx 平滑升级 代理 http 本次实验后端为 geoserver 如下就可以实现基础的http反向代理 server list
  • 刷脸支付是一套完整解决商户方案的大数据

    支付宝刷脸支付服务还可以使用微信刷你的脸 支付宝刷脸支付服务接受第三方支付 因此它了面部识别支付的权利和产品的开发 对于用户来说 脸刷支付不但是一种收集功能 而且是一套完整解决方案的大数据 支付宝刷脸支付服务商不但解决了现金收集的问题 而且

随机推荐

  • Fiddler抓取HTTP请求详解

    Fiddler抓取HTTP请求 抓包是Fiddler的最基本的应用 以本博客为例 启动Fiddler之后 在浏览器中输入http baidu com 键入回车之后 在Fiddler的web session界面捕获到的HTTP请求如下图所示
  • ES6 迭代器Iterator

    Iterator是一种新的遍历机制 两个核心 1 迭代器是一个接口 能快捷的访问数据 通过Symbol iterator来创建迭代器 通过迭代器的next 方法 获取数据 2 迭代器是用于遍历数据结构的指针 类似于数据库的游标 const
  • Tomcat运行startup一闪而过

    右击startup bat选择用记事本打开 在最后加一个PAUSE 这样可以暂停住窗口 end PAUSE 一般是因为没有配置JAVA HOME这个环境变量导致的 只需要在系统环境变量里新加一个JAVA HOME 变量值填你的jdk安装路径
  • 计组

    目录 一 知识点 二 习题 参考文献 一 知识点 不同机器有不同的指令系统从计算机指令系统设计角度 可将计算机分为复杂指令系统计算机CISC Complex InstrucTIon Set Computer 和精简指令系统计算机RISC R
  • 匿名内部类

    关于匿名内部类还有如下两条规则 1 匿名内部类不能是抽象类 因为系统在创建匿名内部类的时候 会立即创建内部类的对象 因此不允许将匿名内部类 定义成抽象类 2 匿名内部类不等定义构造器 因为匿名内部类没有类名 所以无法定义构造器 但匿名内部类
  • java正则表达式匹配所有数字,包括带小数点的数字

    用于匹配的正则表达式为 1 9 d d 0 d 1 9 1 9 匹配1 9的数字 d 匹配数字 包括0 9 紧跟在 d 之后 表明可以匹配零个及多个数字 匹配小数点 紧跟在 之后 表明可以匹配零个或一个小数点 0 匹配一个数字0 其中的 1
  • 百度网盘提取码_百度网盘提取码查询工具,老菜建议大家收藏备用!

    APP菜园 打造属于我们自己的APP帝国 1 打开支付宝app 首页搜索 8221050 然后点击快捷功能 天天领红包 2 软件领取流程 1 认真阅读下软件介绍 2 找到图片下方的 获取链接 复制 3 打开手机上的浏览器粘贴链接搜索 百度云
  • Unity学习笔记(一)结构体的简单理解与应用

    Unity中的结构体的简介与使用 一 Unity中的结构体是什么 二 结构体与类的不同 一 Unity中的结构体是什么 简单来说 在 C 中 结构体是值类型数据结构 它使得一个单一变量可以存储各种数据类型的相关数据 例如我定义了一个结构体
  • Mybatis使用IN语句查询

    一 简介 在SQL语法中如果我们想使用in的话直接可以像如下一样使用 select from HealthCoupon where useType in 4 3 但是如果在MyBatis中的使用in的话 像如下去做的话 肯定会报错 Map
  • FFMPEG进阶系列02-ffmpeg命令详解3

    ffmpeg 的封装转换 FFmpeg的封装转换部分 主要是通过libavformat这部分来完成的功能 通过libavformat库进行mux和demux操作 多媒体文件的格式有很多种 但是还是有好多demux与mux的操作参数是公用的
  • 代码随想录算法训练营day1

    代码随想录算法训练营第一天 704 二分查找 27 移除元素 704 二分查找 题目链接 leetcode704 Binary search 暴力解法 class Solution public int search vector
  • 第01课:以太坊节点部署及基本命令操作

    第01课 以太坊节点部署及基本命令操作 区块链诞生自中本聪的比特币 自 2009 年以来 出现了各种各样的类比特币的基于公有区块链的数字货币 目前各个国家及企业机构都对区块链投入巨大的财力和人力来对区块链技术进行研究 官方文档 https
  • mapper-spring-boot-starter 主要作用是

    今天是第一次接触到 这个场景启动器内心中真是一片的茫然 学习了这么长时间我居然还不知道有这个的存在今天好好查一查资料 参考资料 https blog csdn net crq1205 article details 88040582 MyB
  • 【Metashape精品教程1】 软件介绍

    Metashape精品教程1 软件介绍 概述 一 软件功能 二 软件优点 三 软件缺点 四 软件安装 概述 Agisoft Metashape是一款独立的数字摄影测量软件 能够处理航空 近景摄影 卫星等获取的影像数据 生成相应的数据产品 该
  • Unity5中叹为观止的实时GI效果

    原地址 今天为大家分享 unity与Alex Lovett共同使用 unity5制作的Shrine Arch viz Demo 其中充分利用了Unity5的实时全局光照功能 实在是太过惊艳 随便一帧都可以直接拿来当做屏保 上面的Demo使用
  • java trim 空指针_trim()空指针异常问题!

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 先上程序 import java io BufferedReader import java io File import java io FileReader public class Dis
  • springboot实现文件的上传下载

    SpringBoot文件上传与下载 文件的上传与下载 在springmvc阶段要实现文件的上传下载 需要的依赖 gt gt
  • gdb调试命令的使用及总结

    gdb是一个在UNIX环境下的命令行调试工具 如果需要使用gdb调试程序 请在gcc时加上 g选项 下面的命令部分是简化版 比如使用l代替list等等 1 基本命令 命令 描述 backtrace 或bt 查看各级函数调用及参数 finis
  • Python字符编码及转换

    Python字符编码及转换 在Python开发中 我们经常需要处理不同的字符编码问题 因为在不同的系统 平台 语言之间 字符编码的表示方式是不同的 本文将介绍Python中常见的字符编码以及它们之间的转换方法 ASCII字符集 ASCII
  • Linux保护文件实现,Linux完整性保护机制模块实现分析(1)

    原标题 Linux完整性保护机制模块实现分析 1 2 详细分析2 1 模块功能描述 文件系统完整性模块包含四种机制 监控磁盘机制 同步机制 检查修复文件系统机制 监视文件系统机制 1 监控磁盘机制主要由statfs by dentry vf