【问题标题】:How to judge if a file is the ".." file in Linux kernel programming?Linux内核编程中如何判断一个文件是否为“..”文件?
【发布时间】:2014-02-21 17:24:36
【问题描述】:

我正在从事需要跟踪文件(inode)路径的 Linux 内核编程。

我知道一些判断文件是目录还是软链接的函数,比如S_ISDIR、S_ISLNK。但是我不知道如何判断一个文件(inode)是否是“..”文件,即文件指向父目录?

【问题讨论】:

    标签: linux linux-kernel inode


    【解决方案1】:

    AFAIK 没有名称为“..”的 inode。当您访问 /etc/passwd 等文件时,有一个称为路径名查找的过程,它将每个“/”、“etc”和“passwd”转换为 inode。当它遇到'.'或'/'或'..'有特殊处理。为了 '。'和'/',它是一种无操作并继续使用相同的inode。对于“..”,它会返回获取它来自的父 inode。这在Understanding the Linux Kernel 第 12 章,虚拟文件​​系统中有非常清楚的解释。我强烈建议通过它。另见http://www.mjmwired.net/kernel/Documentation/filesystems/path-lookup.txt

    【讨论】:

    • 具体来说,我正在编写一个安全模型,如果它想在某些情况下遵循符号链接或“..”,它将阻止操作。我可以判断它是否想使用 S_ISLNK(inode->i_mode) 访问 slink,但我如何判断它是否想访问“..”?无论如何,感谢您的回答,我是新手,您的参考对我帮助很大。
    • 那么我猜你将不得不更新这部分路径名查找:lxr.free-electrons.com/source/fs/namei.c#L1745 注意这是 VFS 代码,会影响所有文件系统。
    猜你喜欢
    • 2021-03-11
    • 1970-01-01
    • 2010-09-17
    • 2011-09-05
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    • 2023-03-03
    • 2022-11-22
    相关资源
    最近更新 更多