如何检测 Linux 中的特殊隐藏文件(例如 .reiser_priv)?

gol*_*lem 6 linux filesystems

我最近发现在 Linux 上发现了一些特殊的隐藏目录,这些目录没有用ls -a命令显示。即我遇到的是位于 reiserfs 文件系统根目录中的.reiserfs_priv目录。我可以调用ls -ld .reiserfs_priv它并cd进入目录(以 root 身份),但它没有用ls -a命令显示(find ./ -name *reiser*也找不到它)。

问题:

  • 我如何实际检测这种目录?
  • 我可以自己创建它们吗?
  • 他们使用什么样的机制来保持隐身,为什么ls -a看不到他们?
  • 它也可以是文件吗?
  • 通常在哪里使用这些类型的目录?

Gil*_*il' 3

通常您无法检测或创建此类文件。它们存在只是因为文件系统报告不一致的数据。

\n\n

在没有对文件系统进行修改的情况下,获取有关该文件系统上的文件的信息的各种方法之间存在冗余。例如,权限允许:

\n\n
    \n
  • 如果报告了文件名,readdir则调用lstat该名称将会成功。
  • \n
  • 如果lstat不报告该文件是符号链接,则调用statopen也会成功。
  • \n
  • 如果stat成功那就open成功`。
  • \n
  • 如果open成功,那么就这样做statlstat
  • \n
  • 如果stat报告文件是目录则cd成功,反之亦然。
  • \n
\n\n

等等。当 Reiserfs 文件系统省略.reiserfs_priv目录列表中的条目,但通过直接访问它的系统调用将其报告为目录时,文件系统将报告不一致的信息。

\n\n

这些信息并没有错,只是不一致。这只是违反惯例,而不是规则。如果有一个非常快的妖精在您运行cdor之前创建了该目录ls .reiserfs_priv,并在您运行之前将其删除,则可以观察到相同的行为find

\n\n

对于文件系统来说,报告不一致的数据是一种不好的形式,因为这会让一些应用程序和用户感到困惑,所以只有在有充分理由的情况下才应该这样做。就 Reiserfs 而言,原因是使一些信息相当隐藏,特别是不被文件搜索和索引遍历。这很有用,因为 的内容.reiserfs_priv不是 \xe2\x80\x9creal\xe2\x80\x9d 文件,它用于存储扩展文件属性*xattr,通过调用系统调用族来访问这些属性。事实上,我不知道为什么它会被暴露\xe2\x80\x94\xc2\xa0也许只是为了调试目的。

\n\n

不报告存在的文件的另一个示例是允许以不同方式返回相同数据的文件系统。例如,ciopfs提供了文件系统的不区分大小写的视图;如果您有一个名为 then 的文件,则Foo目录列表将仅列出,Foo但访问fooFOO等将会成功。

\n