8

Linux プログラムでは、コンソール (xorg がない場合など) で /dev/input/event* を使用してキーボードとマウスを読み取りますが、それらを読み取るには root になる必要があります。root権限を必要とせずに(permisonsやconfigファイルなどを変更せずに)そのようなものを読むための代替フォームはありますか?

デフォルトでそれを説明する必要がない理由を理解しています。

4

2 に答える 2

9

はい、udev ルールを作成することで可能です。このHowToを参照してください

たとえば、ルートとして、ファイル /etc/udev/rules.d/99-input.rules を作成します。

KERNEL=="イベント*"、NAME="input/%k"、MODE="660"、GROUP="input"

注: おそらく最初にグループ "input" を作成する必要があります。

于 2012-11-04T16:44:48.957 に答える
7

デバイス ファイルがどのグループに属しているかを確認します。たとえば、次のようになります。

$ ls -l /dev/input/
...
crw-rw---- 1 ルート plugdev 13、64 Nov 4 18:01 event0
crw-rw---- 1 ルート plugdev 13、65 Nov 4 18:01 event1
crw-rw---- 1 ルート plugdev 13、66 Nov 4 18:01 event2
crw-rw---- 1 ルート plugdev 13、67 Nov 4 18:01 event3
crw-rw---- 1 ルート plugdev 13、68 Nov 4 18:01 event4
...

プログラムを実行するユーザーは、このシステムの plugdev グループに属している必要があります。おそらく、あなたのシステムでも似たようなことが起こります。

それを回避する方法 (グループに属さずにデバイスの読み取りまたは書き込み) を求めている場合は、いいえ。これは明らかに、ユーザー グループによるセキュリティの目的を無効にします。

イベント デバイスを直接読み取る代わりに、適切なユーザー空間 API を使用することもできます。たとえば、キーボードを読み取るには ncurses を使用し、マウスを読み取るには GPM を使用します。

于 2012-11-04T16:48:21.700 に答える