miscdevice节点权限需要通用

miscdevice node permission needs to be generic

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

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

此外,如果您想为 所有用户 授予 read/write 访问您设备的权限,您需要设置 666权限模式,而不是你提到的660。这是因为你的设备文件root:root为user/group,权限模式的前两位是user/group。第三个数字是 others,你真的想改变。

考虑到所有提到的信息,您可以进行下一步。创建您的 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 的设备管理器。您还可以在 /etc/mdev.conf 中为 mdev 创建规则。创建规则后,您应该 运行 mdev -s 命令。有关详细信息,请参阅 this

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