gpt4 book ai didi

c - 以编程方式在 Linux 中查找文件类型

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:44:23 25 4
gpt4 key购买 nike

我正在尝试查找 .pdf、.doc、.docx 等文件的文件类型,但以编程方式不使用 shell 命令。实际上我必须制作一个应用程序来阻止访问特定扩展名的文件。我已经在 LKM 中连接了 sys_call_table,现在我希望在触发打开/读取系统调用时,我的 LKM 检查文件类型。

我知道我们有一个当前指针,它可以访问当前进程结构,我们可以用它来找到存储在 dentry 结构中的文件名,而且在 Linux 中,文件类型由存储在起始字节中的魔数(Magic Number)标识文件。但我不知道如何找到文件类型以及它的确切存储位置?

最佳答案

Linux 不会“存储”其文件的文件类型(与 Mac OS 的 resource fork 不同,我认为这是执行此操作的最著名平台)。文件只是命名的字节流,它们没有操作系统隐含的结构。

要么您只是告诉程序要使用哪个文件(然后它就照您说的做),要么程序使用更高级别的功能来确定。

有些程序可以重新发明这个特殊的轮子(我负责 one of those ),但您也可以使用例如file(1) .当然,这需要您的程序解析和“理解”您将获得的文本输出,从某种意义上说,这只会解决问题。

但是,我不认为从内核空间调用 file 是非常明智的,所以最好为您需要的任何类型集重新创建测试,以保持它的小。

换句话说,我的意思是您应该简单地重新实现所需的测试。这通常非常复杂,所以如果您真的需要对尽可能多的类型集执行此操作,这可能不是一个好主意。 :/

关于c - 以编程方式在 Linux 中查找文件类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14707785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com