Linux kernel linux内核编程-创建文件或以root权限打开文件

Linux kernel linux内核编程-创建文件或以root权限打开文件,linux-kernel,Linux Kernel,我正在创建自己的系统调用和 我正在使用此链接中的函数 读取和写入文件 问题是,当非root用户调用我的新系统调用时,这些函数不起作用 选项包括:在调用这些函数之前设置根权限 或者在调用这些函数之前创建一个具有777权限的文件 也许还有更多的选择 但是我不知道怎么做。您需要以某种方式模拟setfsuid调用(无需权限检查),执行打开并恢复当前进程的fsuid。更改FS UID将允许您实际调用打开的系统调用,为自己使用文件描述符(警告:用户代码也将能够使用该文件描述符!),然后恢复FS UID将减少

我正在创建自己的系统调用和 我正在使用此链接中的函数 读取和写入文件

问题是,当非root用户调用我的新系统调用时,这些函数不起作用

选项包括:在调用这些函数之前设置根权限 或者在调用这些函数之前创建一个具有777权限的文件 也许还有更多的选择


但是我不知道怎么做。

您需要以某种方式模拟setfsuid调用(无需权限检查),执行打开并恢复当前进程的fsuid。更改FS UID将允许您实际调用打开的系统调用,为自己使用文件描述符(警告:用户代码也将能够使用该文件描述符!),然后恢复FS UID将减少正在使用的文件描述符的安全漏洞。建议您在返回用户空间之前也关闭该文件。

要将权限设置为
777
call
chmod 777 FILENAME
@EliSadoff:从内核中生成一个进程只是为了这样做似乎是一个非常愚蠢的想法。首先,将权限设置为
777
通常是一个愚蠢的想法。这不是老虎机@MattiVirkkunen我刚才说的是如何设置
777
@EliSadoff的权限:你会在内核代码中这样做吗?我通常在终端中的文件上运行
chmod 777
chmod+x
。如何?怎样?怎样?怎么做?好吧,为了模拟setfsuid调用,实际上我自己在搞乱它;我会从实际的setfsuid调用中汲取灵感,简单地删除有条件返回-EACCES的内容,然后让它将FS UID设置为0。我可以创建类似于setfsuid的函数,并且我必须在调用翻转打开之前调用我新创建的函数?你调用该函数,然后打开文件(sys\u open),然后恢复旧的fsuid。