2012-11-04 16 views
7

Su un programma linux, sulla console (come in no xorg, ecc), sto usando usando/dev/input/event * per leggere tastiere e mouse, tuttavia ho bisogno di essere root per poterli leggere. Esiste una forma alternativa per leggere quella roba senza i privilegi di root (senza dover cambiare permessi e file di configurazione, ecc.)?Input raw di Linux senza autorizzazione root?

Capisco perché lo fa di default non c'è bisogno di spiegarlo.

+1

Avrai sempre bisogno di avere i permessi di root per farlo. In caso contrario, potrebbe essere possibile un registratore/sniffer/spia della tastiera. E Unix è stato progettato per essere un sistema sicuro, multi-utente ... –

risposta

6

Verificare per quale gruppo appartengono i file del dispositivo. Per esempio, qui ottengo:

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

L'utente che esegue il programma deve trovarsi nel gruppo plugdev su questo sistema. Qualcosa di simile è probabilmente il tuo sistema.

Se stai chiedendo un modo per aggirarlo (leggendo o scrivendo sul dispositivo senza essere nel gruppo), allora no. Ciò ovviamente annullerebbe lo scopo della sicurezza attraverso i gruppi di utenti.

Un'alternativa alla lettura diretta dei dispositivi evento sarebbe invece l'utilizzo di un'API dello spazio utente appropriata. Ad esempio, per leggere la tastiera si userebbero ncurses e per leggere il mouse si utilizzerà GPM.

7

sì, è possibile con la creazione di una regola di udev, vedere questo HowTo

Per esempio come root, creare le /etc/udev/rules.d/99-input.rules file:

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

Nota: si avrà probabilmente bisogno di creare il gruppo "input" per primo.

+1

Bene, hai bisogno di root per creare una regola di udev. – theomega

+0

@theomega sì, certo, ma è necessario solo una volta ed è molto meglio che cambiare la modalità. – iabdalkader

Problemi correlati