![无需 root 权限即可从 /dev/input 设备读取](https://linux22.com/image/77105/%E6%97%A0%E9%9C%80%20root%20%E6%9D%83%E9%99%90%E5%8D%B3%E5%8F%AF%E4%BB%8E%20%2Fdev%2Finput%20%E8%AE%BE%E5%A4%87%E8%AF%BB%E5%8F%96.png)
有没有一种方法可以从/dev/input
设备读取数据,而不需要 root 权限?
就我而言,我想使用 Python 库埃夫德夫从多个键盘读取(这样我就知道信号来自哪个键盘),所以简单地使用stdin
是不可能的。
总是必须使用 sudo 权限调用程序不会太优雅 - 例如,是否可以 chmod 目录/dev/input
(在我的情况下安全性并不重要)?
或者,更好的是,是否有另一种直接从输入设备读取的方法?
答案1
这堆栈溢出文章似乎回答了你的问题。
请参阅第二个答案。接受的答案是:
检查设备文件属于哪个组。例如,我在这里得到:
$ ls -l /dev/输入/ ... crw-rw---- 1 rootplugdev 13, 64 十一月 4 18:01 event0 crw-rw---- 1 rootplugdev 13, 65 十一月 4 18:01 事件1 crw-rw---- 1 rootplugdev 13, 66 十一月 4 18:01 事件2 crw-rw---- 1 rootplugdev 13, 67 十一月 4 18:01 event3 crw-rw---- 1 rootplugdev 13, 68 十一月 4 18:01 event4 ...
执行程序的用户需要位于该系统上的plugdev 组中。您的系统上可能存在类似的情况。
如果您正在寻求一种方法来规避这种情况(在不加入组的情况下读取或写入设备),那么不行。这显然会违背用户组安全的目的。
直接读取事件设备的另一种方法是使用适当的用户空间 API。例如,要读取键盘,您将使用 ncurses,要读取鼠标,您将使用 GPM。