miscdevice节点权限必须是通用的

时间:2015-03-13 21:32:19

标签: linux-kernel linux-device-driver embedded-linux

我希望能够将所有用户的访问权限授予我的驱动程序。我希望能够为我的驱动程序节点授予660设备节点权限。驱动程序节点是通过框架创建的miscdevice注册的一部分。但我总是以root用户/组的形式获得600个权限的/ dev / mydev。如何更改获得660即crwrw的权限 -

1 个答案:

答案 0 :(得分:3)

只需修改驱动程序代码,即可在/dev中更改设备文件的权限。这是因为/dev中的文件不是由内核创建的。它们由udev(在PC Linux上)或其他设备管理器创建。所以你需要处理udev这样做。更具体地说,您需要创建所谓的 udev规则

此外,如果您想为所有用户提供设备的读/写访问权限,则需要设置 666 权限模式,而不是 660 你提到的。这是因为您的设备文件有root:root作为用户/组,而权限模式中的前两位数用于用户/组。第三个数字用于其他,您实际上想要更改。

考虑到所有提到的信息,您可以做下一步。创建您的udev规则文件(例如99-my-misc-dev.rules):

$ sudo vim /etc/udev/rules.d/99-my-misc-dev.rules

将下一行粘贴到此文件中:

KERNEL=="mymiscdevice", MODE="0666"

当然,您应该将mymiscdevice更改为您设备的文件名(如/dev中所示)。

告诉udev重新加载所有规则:

$ sudo udevadm trigger

现在您应该看到设备文件的666权限。

请注意,在嵌入式设备上,您通常没有udev,但/dev中的文件仍由某些设备管理器或脚本创建。例如,如果您使用BusyBox rootfs,则会有一个名为mdev的设备管理器。您还可以在mdev中为/etc/mdev.conf创建规则。创建规则后,您应该运行mdev -s命令。有关详细信息,请参阅this

在Android上,这些东西通常在/init.rc文件中完成(在Android ramdisk中)。