与内核模块交互而不给用户 sudo 访问权限?

与内核模块交互而不给用户 sudo 访问权限?

我正在学习如何在用户空间中创建内核模块。有谁知道可以从用户空间控制的任何简单的内核模块?

我已经浏览过 /lib/modules 但大多数驱动程序都需要 root 访问权限并进入深奥的功能,我真的不想浏览所有源代码。 (例如 epoe)。

有谁知道任何用户空间内核设备驱动程序?

在此输入图像描述

答案1

“用户空间内核模块”的描述在术语上是矛盾的:要么在用户空间中运行,要么在内核中运行,但它不能在任何一个中运行,并且不能在用户空间中运行内核模块。

也就是说,可以写设备驱动程序在用户空间中,通过使用相当通用的内核 API(它们在内核空间中运行,无论它们是否是模块),并在用户空间中实现实际的设备驱动程序功能。使用libusbspidev或 的设备驱动程序i2cdev就是这样的例子:它们使用库来访问众所周知的内核 API,或者直接访问 API,但设备驱动程序逻辑运行在用户空间中。

另一个类似的例子是保险丝:使用固定的内核 API,您可以在用户空间中实现您自己的文件系统。

因此,如果您需要示例,请通过 google 搜索使用这些 API 的设备驱动程序。但它们仍然是“用户空间设备驱动程序”的示例,而不是“用户空间内核设备驱动程序”的示例,所以我不确定这是否是您想要的。

如果你想编写在内核空间中运行的东西,你需要学习如何编写内核模块。

答案2

有一个关于创建文件的sysfs答案堆栈溢出。它们易于处理,默认情况下无需 root 权限即可访问。

相关内容