如何从给定的 inode 获取路径名或 dentry 或结构文件?

Leo*_*rdo 5 kernel inode linux-kernel pathname

我需要知道如何获取路径名或dentrystruct file给定的索引节点。

我曾经使用从路径名file_open获取struct file但总是给出内核恐慌。我需要一种方法来将我的 inode 列表中的 inode 与路径名中的 inode 进行比较,或者比较磁盘中的所有 inode 以找到相应的路径名,然后与我的 inode 列表进行比较。

sar*_*old 1

一般来说,这是极其困难的。

一个 inode 可能有数千个路径名。所有名称都同样“有效”。即使在不支持多个链接的文件系统上,文件也可以绑定安装到系统中的任何其他位置数千次。

AppArmor和TOMOYO强制访问控制系统都依赖于路径名,但有一个巨大的区别:访问控制是在使用特定名称打开的特定文件描述符上执行的,并且这两种工具都使用特定名称。

查看security/apparmor/path.c函数aa_get_name()security/tomoyo/file.c函数tomoyo_get_realpath()以获取有关从 inode 查找路径名的详细信息 - 给出额外的支持信息。仅从普通的 inode 对象来看,我认为您可能不走运。