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 中)。
我希望能够让所有用户访问我的驱动程序。我希望能够将 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 中)。