8

在 linux 程序上,在控制台上(如没有 xorg 等),我使用 /dev/input/event* 来读取键盘和鼠标,但是我需要成为 root 才能读取它们。是否有另一种形式可以在不需要 root 权限的情况下读取这些内容(无需更改权限和配置文件等)?

我理解为什么默认情况下会这样做,无需解释。

4

2 回答 2

9

是的,可以通过创建 udev 规则,请参阅此HowTo

例如,以 root 身份创建文件 /etc/udev/rules.d/99-input.rules:

内核==“事件*”,名称=“输入/%k”,模式=“660”,组=“输入”

注意:您可能需要先创建组“输入”。

于 2012-11-04T16:44:48.957 回答
7

检查设备文件属于哪个组。例如,在这里我得到:

$ ls -l /dev/输入/
...
crw-rw---- 1 root plugdev 13, 64 Nov 4 18:01 event0
crw-rw---- 1 root plugdev 13, 65 Nov 4 18:01 event1
crw-rw---- 1 root plugdev 13, 66 Nov 4 18:01 event2
crw-rw---- 1 root plugdev 13, 67 Nov 4 18:01 event3
crw-rw---- 1 root plugdev 13, 68 Nov 4 18:01 event4
...

执行您的程序的用户需要在此系统上的 plugdev 组中。您的系统上可能存在类似的情况。

如果您正在寻求一种规避方法(在不加入组的情况下读取或写入设备),那么不会。这显然会破坏用户组的安全目的。

直接读取事件设备的替代方法是使用适当的用户空间 API。例如,要读取键盘,您将使用 ncurses,而要读取鼠标,您将使用 GPM。

于 2012-11-04T16:48:21.700 回答