【问题标题】:Linux raw input without root permission?没有root权限的Linux原始输入?
【发布时间】:2012-11-04 16:41:35
【问题描述】:

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

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

【问题讨论】:

  • 您总是需要获得 root 权限才能这样做。否则,键盘记录器/嗅探器/间谍可能是可能的。 Unix 被设计成一个安全的、多用户的系统……

标签: linux events input


【解决方案1】:

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

$ 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。

【讨论】:

    【解决方案2】:

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

    例如作为root,创建​​文件/etc/udev/rules.d/99-input.rules:

    KERNEL=="event*", NAME="input/%k", MODE="660", GROUP="input"

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

    【讨论】:

    • 好吧,你需要 root 来创建 udev 规则。
    • @theomega 当然可以,但这只需要一次,这比更改模式要好得多。
    猜你喜欢
    • 1970-01-01
    • 2015-09-01
    • 1970-01-01
    • 2012-04-11
    • 2012-11-01
    • 1970-01-01
    • 2015-01-28
    • 2012-05-30
    • 2020-10-08
    相关资源
    最近更新 更多