首页 > 解决方案 > 我们可以在内核中打开文件之前检查文件的读写权限吗

问题描述

我想在内核中以只读模式打开一个文件,但在我这样做之前我想检查该文件是否具有读取权限,我该如何检查它?因为甚至要检查我是否需要一个指向输入文件的文件指针。

filp_open(args->inputfile, O_RDONLY, 0);

有什么方法可以在打开之前检查它吗?我尝试使用,但总是失败

if (!fileptr->f_op->read)
{
     error = -EACCES;
     printk("reading input file failed\n");
}

标签: clinuxfilepermissionskernel

解决方案


您应该使用access(char *filepath,int mode)它检查文件访问权限。

mode描述您要检查的内容:F_OK(存在),或 R_OK(读取)、W_OK(写入)或 X_OK(执行)的 OR 组合。

因此,对于您的问题,您可以使用:

#include <unistd.h>
...

if( access( filename, R_OK ) != -1 ) {
    // can read file
} else {
    // cannot read file
}

推荐阅读