如何在linux中用c在文件中打洞以擦除数据

2024-04-15

更新:这个FALLOC_FL_PUNCH_HOLE最初不支持3.0.0-17,我想我需要修补它。

我知道linux有这个hole功能,我想知道是否可以在现有文件中打一个洞。

具体来说,我创建了一个名为hole_test通过这些代码:

 18 #include <stdlib.h>
 19 #include <sys/types.h>
 20 #include <sys/stat.h>
 21 #include <fcntl.h>
 22 #include <unistd.h>
 23 #include <errno.h>
 24 
 25 int main(int argc, char **argv)
 26 {
 27     int fd;
 28     char a[7]="happy!";
 30     fd = open("hole_test", O_CREAT|O_RDWR, 0666);
 31     if(fd == -1)
 32             printf("error, %s\n", (char *)strerror(errno));
 35 //  fallocate(fd, 0x02, 0,0);
 36 //  pwrite(fd, a, sizeof(a), 0);
 37 //  pwrite(fd, a, sizeof(b), 65536);
 38     close(fd);
 39     return 0;
 40 }

首先,我用户L36 L37创建一个文件。这stat hole_test表明:

  File: `hole_test'
  Size: 65540       Blocks: 16         IO Block: 4096   regular file
Device: 801h/2049d  Inode: 1052101     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/   bxshi)   Gid: ( 1000/   bxshi)
Access: 2012-04-03 23:02:35.227664608 +0800
Modify: 2012-04-03 23:02:35.227664608 +0800
Change: 2012-04-03 23:02:35.227664608 +0800

然后我用L35并评论L36 L37在我的文件中打一个洞。(0x02 等于FALLOC_FL_PUNCH_HOLE,我没有找到它的定义位置,所以只需使用它的值)

然后,通过stat hole_test, the Blocks仍然是16岁。

  File: `hole_test'
  Size: 65540       Blocks: 16         IO Block: 4096   regular file
Device: 801h/2049d  Inode: 1052101     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/   bxshi)   Gid: ( 1000/   bxshi)
Access: 2012-04-03 23:02:35.227664608 +0800
Modify: 2012-04-03 23:02:35.227664608 +0800
Change: 2012-04-03 23:02:35.227664608 +0800

我想知道我是否可以在这方面打出新的漏洞hole_test文件删除现有数据?

我怎样才能钻一个洞hole_test在偏移量 0 到 7 处,这样我认为Blocks可能会变成8,我写的字符串就会消失。

希望大家知道我说的话并给我一些建议。


You use fallocate(fd, FALLOC_FL_PUNCH_HOLE, offset, len)。 (从 Linux 2.6.38 开始支持)参见https://lwn.net/Articles/415889/ https://lwn.net/Articles/415889/了解幕后细节和随附补丁。

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

如何在linux中用c在文件中打洞以擦除数据 的相关文章

随机推荐

  • 如果另一列中有匹配的单元格,则 Excel 公式从另一列返回值[重复]

    这个问题在这里已经有答案了 我有两列 如下所示 ID Qty FW01 20 AW08 100 FW01 30 FW01 40 AW55 60 我需要公式在列 ID 中搜索并查找此列中的所有相似单元格 并返回 Qty 列中与此 ID 匹配的
  • 下载 webroot 之外的文件

    好的 首先道歉 因为我意识到这是一个之前已经讨论过很多次的主题 相信我 我知道 我已经阅读了之前的所有问题和答案 但仍然无法使其发挥作用 我有一个包含可下载文件的文件夹 出于安全目的 我将此文件放置在 Webroot 之外 然而 尽管我尽了
  • C++ std::set 更新很乏味:我无法就地更改元素

    我发现更新操作std set乏味 因为没有这样的 API参考参数 http en cppreference com w cpp container set 所以我目前所做的是这样的 find element in set by iterat
  • 如何构建没有声音空安全的APK

    我可以在手机上以发布模式运行应用程序并传递标志 no sound null safety release 但 两者都不flutter build apk enable experiment non nullable nor flutter
  • 如何在 github 上查看整个代码库?

    我想查看 GitHub 上 git 存储库的单个分支中的所有代码 我是一名教授 代码是学生论文的一部分 任何单个提交都只会影响代码的一小部分 如何执行审查 使我能够对任何提交的所有代码进行逐行注释 我相信这个问题与如何制作 github P
  • Symfony2 生产时错误 500 而不是 404

    在我的 Symfony2 项目中 我进入了开发模式正确的 404 异常屏幕 但在生产模式下 我遇到了空白屏幕 HTTP 状态代码为 500 而不是 404 我正在使用位于的自定义错误模板app Resources TwigBundle vi
  • 从 youtube v3 API 获取实际配额限制

    我想从 youtube api 获取我的实际配额限制 有这种可能吗 当我打开这个页面时 我看到了我的极限 但是我怎样才能得到这个呢 不存在此类历史配额使用情况 API 您应该按照以下建议避免配额问题https youtube eng goo
  • AS3 for ios:如何序列化数组然后保存它

    我有一个多维数组 我想序列化它 然后使用共享对象保存它 我尝试了很多事情 但每次都会出现问题 JSON 不能有类型 ByteArray 结果不是 String 那么 SharedObject 不想保存它 共享对象可能不是解决方案的一部分 所
  • 为什么 XPATH count 函数返回 double 而不是 int?

    以下代码片段产生一个无效转换异常 static int XPathCount var doc new XmlDocument doc LoadXml
  • 稀疏矩阵上的 einsum

    看来是numpy的einsum功能不适用于scipy sparse矩阵 有没有其他方法可以做这些事情einsum可以用稀疏矩阵吗 回应 eickenberg 的回答 我想要的特定 einsum 是numpy einsum ki kj gt
  • 使用/从 Springfox 迁移到 springdoc-openapi 有什么优势吗?

    为了在 SpringBoot 2 7 中启用 Swagger 选择 springdoc openapi 相对于 Springfox 的优点 缺点是什么 这可能被认为是基于意见的 但实际上有事实支持使用 springdoc 而不是 Sprin
  • Chrome 61 的本地存储

    从 Chrome 61 开始 添加到本地阶段的任何项目似乎不再在本地配置文件中创建为物理文件 之前运行命令 localStorage setItem key value 将创建一个与该网站相对应的 SQLite 文件 localappdat
  • 自动重定向到干净的网址

    我如何在 php 中自动将网站从脏网址重定向到干净网址 例如 http www mysite com page page1 action action1 to http www mysite com page1 action1 您必须检查它
  • ios 谷歌地图 准确度

    我可以使用谷歌地图显示用户当前位置以及到达他的路线 问题 用户位置大多数时候都在路边 我不能把这样的应用程序放在Appstore中 它会得到不好的评论 我检查了 IOS 的 google sdk 是否有任何准确性的属性 喜欢 self go
  • C语言中枚举的大小

    我如何知道枚举的大小Days 它会等于7 4 sizeof int 28 The printf 这给了我价值4 怎么解释呢 enum Days saturday sunday monday tuesday wednesday thursda
  • 是否可以在drawInContext调用之间保留CALayer的内容?

    是否有任何内置功能可以在 drawLayer inContext 调用之间维护 CALayer 的内容 现在 我将图层复制到缓冲区 并在每次调用drawLayer inContext 时从缓冲区重新绘制图像 但我想知道 CALayer 是否
  • 高级自定义字段获取子字段图像

    我在 ACF 中有一个子字段 名为 imgcolumn 1 这被设置为图像 并允许用户添加图像 现在 在 PHP 中 我尝试检索用户添加的输入 例如 我在 AFC 中有另一个名为 column 1 的子字段 我使用它来检索它 还有其他方法来
  • Android,如何为 TextView 小部件设置主题字体颜色?

    我刚刚在我的主题中应用了黑色背景图像 现在我希望将文本视图的颜色更改为白色 以便它们在深色背景下可见 我认为为 TextView 设置 android textColor 可以像这样解决问题
  • 如何按 pandas.value_counts 对结果进行排序

    我想统计一个数据集中获得 0 5 级的学生人数 我用这个功能final grade num pd value counts final grade 得到像这样的结果 4 0 487 3 0 432 2 0 376 5 0 334 1 0 2
  • 如何在linux中用c在文件中打洞以擦除数据

    更新 这个FALLOC FL PUNCH HOLE最初不支持3 0 0 17 我想我需要修补它 我知道linux有这个hole功能 我想知道是否可以在现有文件中打一个洞 具体来说 我创建了一个名为hole test通过这些代码 18 inc