gpt4 book ai didi

c - 从内核空间中的文件指针获取 fd

转载 作者:太空宇宙 更新时间:2023-11-04 03:57:42 24 4
gpt4 key购买 nike

给定一个结构文件,是否有可能在 linux 内核空间中获取关联的文件描述符?我正在尝试使用 sys_chmod 或 sys_fchmod 更改权限。一个接受文件描述符,另一个期望来自用户空间的文件名。我可以弄清楚如何获取文件名,但如何将其转换为用户空间指针?

谢谢

最佳答案

你所追求的功能是chmod_common:

static int chmod_common(struct path *path, umode_t mode)

它采用路径 和您要设置的模式。不幸的是,正如您所注意到的,它是静态的 并且显然没有导出。所以你可以采用多种方式:

  • 在你自己的功能中复制它所做的一切
  • struct file 获取“文件描述符”(丑陋)
  • 找到调用sys_chmod的方法

现在 sys_chmod 需要一个用户指针,但你在内核中。您可以采取以下措施来欺骗它:

mm_segment_t oldfs = get_fs();

char __user *userptr;
userptr = (char __user __force *) kernptr;

set_fs(KERNEL_DS);

/* call sys_chmod */

set_fs(oldfs);

这一切都非常符合"things you never should do in the Kernel" .

关于c - 从内核空间中的文件指针获取 fd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14913965/

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