/ devのパーミッションを決定するものは何ですか?


11

権限/dev/input/event*が間違っているバグがあるため、Mumbleを使用すると、アプリケーションはキーの押下を検出できません。次のコマンドを実行すると、問題が「修正」されますが、永続的な修正が必要です。

sudo chmod a+r /dev/input/event/*

何が権限を決定し/dev/input/event*、どのように永続的に設定するのですか?


5
「すべて」の読み取り許可を/dev/input/event/*与えると、入力したパスワードなど、キーボードにスニッフィングするためのアクセス権がすべてのユーザーに付与されることに注意してください。シングルユーザーシステムでは、これはそれほど重要ではないかもしれませんが、シングルユーザーシステムでも、システムコンポーネントを安全性の追加レイヤーとして使用nobodyします。この保護を弱めている入力ストリーム。これはMumbleを「修正」するかもしれませんが、問題に対する適切な一般的な解決策ではありません。もっと良い方法があるはずです。
Robie Basak

2
@popeyノードのパーミッション/dev/inputが間違っている理由、および現在所有権とパーミッションが何であるか(おそらくの出力でls -l)について詳しく説明できますか?inputグループに読み取り権限がないという問題(またはグループの所有者ではない)ですか?私のシステムでは、イベントファイルにroot:input所有権があり、ユーザーとグループの所有者の両方がそれらから読み取ることができます。これがない場合は、おそらく全員に読ませるのではなく、そのように設定してみてください。あなたがいる場合行うこれを持ってむにゃむにゃはの力で実行するために、それは十分かもしれinputグループ。
エリアケイガン

@EliahKagan私の答えをどう思いますか?レビューしていただけますか?
セルギーコロディアズニー

はい、それは悪いです。ACLを使用します。以下の私の答えを参照してください
-solsTiCe

Distributionバージョンまたはxorg-serverバージョンを教えてもらえますか?xorg-server 2:1.9.99.902-2ubuntu1が問題を解決したためです。
Tohidタンボリー

回答:


4

ファイルの許可を管理するより柔軟な方法は、ACLを使用することです。

sudo setfacl -m u:popey:rw /dev/input/eventx

これを永続的にする必要がある場合は、イベント入力デバイスに設定するudevルールを使用できます。

ファイル/etc/udev/rules.d/99-userdev-input.rulesを次のように追加します:

KERNEL=="event*", SUBSYSTEM=="input", RUN+="/usr/bin/setfacl -m u:popey:rw $env{DEVNAME}"

次のコマンドでACL権限を確認できます

getfacl /dev/input/event*

2

キャラクターデバイス/ dev / input / event *のパーミッションを最初に設定するものがわかりません

ただし、coreutilsの一部としてデフォルトでシステムにあるソフトウェアを使用して、これらの権限を変更できることは知っています。コマンドを参照してくださいman mknod

イベントデバイスの権限は次のとおりです。

crw-rw ---- 1 root input 13、64 Apr 14 06:39 / dev / input / event0

以下に使用例を示します。

~$ sudo mknod lolwat c 4 64 
~$ sudo mknod lolwatnow c 4 64  -m 777
~$ ls -l lolwat*
crw-r--r-- 1 root root 4, 64 Apr 14 08:07 lolwat
crwxrwxrwx 1 root root 4, 64 Apr 14 08:08 lolwatnow

メジャー番号とマイナー番号を決定するための詳細情報が必要な場合は、こちらをご覧ください

今、あなたは許可が間違っていると言います。したがって、何かがそれらを間違って設定している必要があり、そのことはルートとして実行する必要があります。mknodを使用してデバイスを作成できますが、mkdevも使用できます。mkdevとmknodのデフォルトのアクションが何であれ、そのパーミッションを確認したい場合があります。

私の例のように:/ dev / input / event0にはcrw-rwパーミッションがありますが、lolwatのデフォルトのパーミッションはcrw-r--r--に設定されています

デバイスのタイプが元のアクセス許可を決定するかどうか、私には不確実性があります。

mknodの詳細については、別のリンクをご覧ください


mumbleはルートとして実行されていますか?
j0h

1

基本的に、ファイルを追加する必要があります/etc/udev/rules.d/(名前はのようにすることができます75-input-events.conf

そしてKERNEL=="eventX" , SUBSYSTEM=="input", MODE="0777"、各イベントの行をそのファイルに追加します。ここで、xは番号です。たとえば、私は0から9までのイベントを持っているので、個人的にはそれぞれのイベントに対して行います。このスレッドの最後の回答でKERNEL==event*は、ワイルドカードを使用して追加することもできます。


0

私の提案は、アプリケーションinput-utilsをインストールすることです

sudo -i
apt-get update
apt-get install input-utils

これは、Linuxカーネル(バージョン2.6以降)の入力層を操作するときに役立つユーティリティのコレクションです。カーネルに認識されている入力デバイスを一覧表示し、デバイスが受信した入力イベントを表示し、キーボードマップをクエリまたは変更するユーティリティが含まれています。

関心のあるコマンドは次のとおりです。

sudo -i 
lsinput

すべての入力デバイスと、デバイスに関連する詳細をダンプします。

N番目のデバイス番号を指定することにより、コマンドを使用して入力イベントを監視できます。

sudo -i
input-events <device number>

N番目のデバイス番号を指定することにより、コマンドを使用して特定のイベントデバイスのキーボードマッピングをダンプできます。

sudo -i
input-kyb <device number>

これらのツールを使用すると、システムをデバッグして、入力が期待されるイベントコードを生成するかどうかを確認できます。そのため、キーが機能しない、または正しくマッピングされていないなどの問題を整理できます。

Udevは、Linuxカーネルのデバイスマネージャーです。/ dev内のデバイスノードを管理し、デバイスを追加または削除するときにすべてのユーザー空間アクションを処理します。

Evdevは、Linuxカーネルの汎用入力イベントインターフェイスです。デバイスドライバーからの生の入力イベントを一般化し、/dev/input/ディレクトリ内のキャラクターデバイスを介して使用できるようにします。

デバイス構造内で変更が発生するたびに、カーネルはudevによって取得されるueventを発行します。次に、udevは/etc/udev/rules.d、/run/udev/rules.d、および/lib/udev/rules.dディレクトリで宣言されているルールに従います。

ueventに含まれる情報に基づいて、トリガーする必要のあるルールを見つけ、必要なアクションを実行します。

これらのアクションは、デバイスファイルの作成または削除ですが、特定のファームウェアファイルのカーネルメモリへのロードをトリガーすることもできます。


0

ターミナルで:

sudo nano -b /etc/rc.local

「exit 0」という行に移動し、その上の行に次のように入力します。

sudo chmod a + r / dev / input / event

Ctrl + xを押して終了します。保存するかどうか尋ねられます。yを押します。名前を付けて保存するように求められます。Enterキーを押すだけです。

これで、このコマンドは起動のたびに起動するため、そのフォルダーへのアクセス許可が付与されます。/etc/rc.localファイルは自動的にroot権限を持っているので、これを行うためにパスワードを入力する必要はありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.