【问题标题】:miscdevice node permission needs to be genericmiscdevice 节点权限需要是通用的
【发布时间】:2015-03-13 21:32:18
【问题描述】:

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

【问题讨论】:

  • 为什么chgrp chown 不能帮助更改/dev/mydev 的权限?
  • 无手动交互。我不希望编写手动更改它的脚本。此外,设备权限只能通过 sudo 更改。比 shell sript 更好的 u-dev 或驱动程序。

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


【解决方案1】:

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

另外,如果您想为所有用户授予对设备的读/写权限,您需要设置666权限模式,而不是660强>正如你提到的。这是因为您的设备文件有root:root 作为用户/组,并且权限模式中的前两位数字用于用户/组。第三个数字是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 中)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-02
    • 2013-04-09
    • 1970-01-01
    • 2018-03-25
    • 1970-01-01
    • 2020-01-25
    • 2013-01-01
    • 1970-01-01
    相关资源
    最近更新 更多