/lib/udev/rules.d在哪里

康拉德B

libusb用于连接外围设备,并希望允许非root用户访问。我什至不知道这应该如何工作,或者不应该诚实,但显然我可以修改/lib/udev/rules.d文件或将其添加到允许使用访问组的文件中。

首先寻找快速修复,其次寻找可以解释设备和规则系统的地方,以便我以后可以回来进行自我教育。一些问题并没有完全为我解答。

电信

首先,运行lsusb,然后插入您的USB外设并lsusb再次运行比较两个清单:第二个清单应至少包含一行描述您的外围设备的行。

确定正确的行后,记下该ID xxxx:yyyy行上数字。这些是设备的供应商ID产品ID

但是首先,关于udev规则文件的一些原则:

您可以添加任何想要的udev规则文件/etc/udev/rules.d:唯一的名称要求是文件名应带有.rules后缀。

其中的文件/lib/udev/rules.d是为Linux发行版的预打包规则保留的:对系统中安装了影响udev规则的新补丁程序后,对其中任何现有文件所做的任何更改都将被覆盖。

如果需要修改现有规则,则应要修改的规则文件复制/lib/udev/rules.d/etc/udev/rules.d,并保留文件的原始名称。中的任何文件/etc/udev/rules.d覆盖中具有相同名称的文件/lib/udev/rules.d制作完副本后,您可以根据需要修改副本,/etc/udev/rules.d并确保在安装某些安全更新时将来不会覆盖所做的更改,这可以确保安全。

两个目录中的规则文件都以简单的字母数字顺序读取(考虑了替代项后),如果存在冲突的规则,则以最后一个为准。有一个约定,规则文件名应类似于NN-descriptive-name.rules,其中NN标识此文件在规则总体顺序中的位置。

然后到编写规则的实际任务。

如果lsusb清单中您设备的ID为xxxx:yyyy,则udev规则中指定设备的部分为:

SUBSYSTEM=="usb", ATTRS{idVendor}=="xxxx", ATTRS{idProduct}=="yyyy"

注意加倍的等号。该约定类似于C,Java和某些其他编程语言:等号加倍表示测试是否相等,单个等号表示某些值设置为特定值。

在大多数现代Linux版本中,您可以TAG+="uaccess"在规则行的末尾使用以指定当前本地登录系统的任何人都可以访问特定设备。

如果您只需要某些用户才能访问设备,则创建一个组(sudo groupadd mydevice),将用户添加到该组(usermod -a -G mydevice username)中,并使该组只能GROUP="mydevice", MODE="0660"在规则行的末尾访问该设备然后,添加到组中的人员可以使用ssh例如,远程连接到系统并仍然使用该设备;不是该小组成员的人将根本无法使用该设备。

注意:新的组成员身份将在您下次登录时生效,因此,如果您将自己添加到新的组中,则需要先注销然后重新登录,然后再测试设备。

如果要允许系统上的每个人都可以访问设备,则只需MODE="0666"在规则行的末尾指定即可(在执行此操作之前,您应该三思而后行。)

全部放在一起

因此,如果您不需要修改任何现有规则文件,则只需创建自己的文件即可,例如/etc/udev/rules.d/99-mydevice.rules

sudo <your-favorite-text-editor> /etc/udev/rules.d/99-mydevice.rules

如果只想允许本地登录的用户使用该设备,则文件内容应如下所示:

SUBSYSTEM=="usb", ATTRS{idVendor}=="xxxx", ATTRS{idProduct}=="yyyy", TAG+="uaccess"

保存规则文件后,运行以下命令以使新规则立即生效:

udevadm control --reload-rules

如果改为使用基于组的解决方案,请在此时注销并重新登录。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章