【问题标题】:Creating Directory Loops by Manipulating ext4通过操作 ext4 创建目录循环
【发布时间】:2013-11-29 03:09:29
【问题描述】:

出于学术目的,我正在弄乱一些文件系统。 我的目标之一是在每个文件系统中创建一个目录循环。 目前我被 ext4 卡住了,由于某种原因它不能像其他人一样工作。

我创建了两个文件夹,'top' 和 'bottom' 并尝试操纵 ext4 的磁盘结构以创建某种从底部到顶部的硬链接,从而导致无限循环。

问题是,当我使用ls 浏览文件系统时,它要么不显示两个文件夹(尽管我只操作了底部的文件夹)要么显示顶部,但在顶部的目录列表被破坏如下:

ls: Access to bottom not possible: I/O Error (freely translated from german)
total 2
drwxr-xr-x 3 root root 1024 Nov 14 15:49 .
drwxr-xr-x 4 root root 1024 Nov 14 15:48 ..
d????????? ? ?    ?       ?            ? bottom

到目前为止我采取的步骤是:

  1. 找到top inode的inode table entry(entry 12),看它指向block 3510
  2. 下一个 inode 表条目是底部的(条目 13),看它指向块 3511
  3. 转到块 3510,让 .和 .. 不变,但将底部的 inode 编号更改为 12
  4. 尝试使用ls 访问目录 -> 错误
  5. 转到块 3511,更改 .到 inode 12,.. 到 inode 2(用于根目录)
  6. 尝试使用ls 访问目录 -> 错误
  7. 更改inode表中的inode entry 13,让它指向块3510
  8. 和往常一样的错误

我意识到 inode 条目中的 inode 和范围树具有哈希和,但我的理解是步骤 1 到 3 不应使这些哈希值中的任何一个无效。 我对ls 内部工作的理解可能很低,无法找出我在这里做错了什么。

有人知道我做错了什么,或者有更好的方法来实现我想要做的事情吗?非常感谢您的帮助,因为我的学士论文需要该循环。

【问题讨论】:

    标签: linux filesystems ext4


    【解决方案1】:

    好的,我终于弄清楚问题所在了。

    在 syslog 中环顾四周,我发现每当浏览目录时,我都会收到以下消息:

    ext4_lookup:1376: inode #12: comm ls: 'bottom' linked to parent dir

    在互联网上搜索了一段时间并在 IRC 上询问了 ext4 开发人员后,我终于找到了this 补丁,该补丁致力于 ext4 文件系统代码,该代码正是针对我试图做的事情。 不错的补丁,但无论如何你都可以这样做来获得目录循环:

    "/"
     |--"top_1"
     |   \--"bottom_1" --> "top_2"
     | 
     \--"top_2"
         \--"bottom_2" --> "top_1"
    

    【讨论】:

      猜你喜欢
      • 2017-07-19
      • 2015-06-24
      • 2021-06-15
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多