Lê de / dev / input devices sem privilégios de root

6

Existe uma maneira de ler /dev/input devices, sem precisar de privilégios de root?

No meu caso, eu gostaria de usar a biblioteca Python evdev para ler a partir de vários teclados (para que eu saiba de qual teclado o sinal vem), então simplesmente usar stdin não é possível.

Sempre ter que chamar o programa com sudo-privileges não seria muito elegante - é possível, por exemplo, chmod o diretório /dev/input (a segurança não importa no meu caso)?

Ou, melhor ainda, há outra maneira de ler diretamente dos dispositivos de entrada?

    
por stunningpotato 10.11.2015 / 21:42

1 resposta

7

Este artigo estouro de pilha parece responder à sua pergunta.

Veja a segunda resposta. A resposta aceita é:

Verifique para qual grupo os arquivos do dispositivo pertencem. Por exemplo, aqui eu recebo:

$ ls -l /dev/input/
...
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
...

O usuário que está executando seu programa precisa estar no grupo plugdev deste sistema. Algo semelhante é provavelmente o caso do seu sistema.

Se você está pedindo uma maneira de contornar isso (ler ou escrever no dispositivo sem estar no grupo), então não. Isso obviamente derrotaria o propósito de segurança, embora os grupos de usuários.

Uma alternativa para ler os dispositivos de evento diretamente seria usar uma API de espaço de usuário apropriada. Por exemplo, para ler o teclado, você usaria ncurses e, para ler o mouse, usaria o GPM.

    
por 10.11.2015 / 21:46

Tags