システムをアップデートしたらなぜか/dev/uinput
の権限が不足してxkeysnailが動かなくなったので対策を調べました。原因がよくわからないので対処療法ですが。。
[2023/12/21追記] これはsystemd 254.1のバグだった模様(参考)。現在の255.1-1-archでは下記の変な挙動は起きませんので、安心して660
を指定ください(なお、「対処」の設定でも問題は起きないのでどっちでも良い)。
環境
- Arch linux (6.4.7-arch1-3)
- Systemd 254 (254-1-arch)
現象
udev
のルールで指定した/dev/uinput
のパーミッションが指定通りにならない1 2。660の二桁目はどこへ・・・?
SUBSYSTEM=="misc", KERNEL=="uinput", MODE="660", GROUP="input"
crw------- 1 root input 10, 223 8月 6 11:55 /dev/uinput
対処
uinput.rules
を以下のように変更する。
SUBSYSTEM=="misc", KERNEL=="uinput", TAG+="uaccess"
これにより/dev/uinput
にuaccess
タグが設定され、一般ユーザからの読み書きが可能になります(下記、動作の参考になりました)。
以下のように、ACLでユーザclarry
からの読み書き権限が付与されていますね。
crw-rw----+ 1 root root 10, 223 8月 6 12:08 /dev/uinput
getfacl: Removing leading '/' from absolute path names
# file: dev/uinput
# owner: root
# group: root
user::rw-
user:clarry:rw-
group::---
mask::rw-
other::---
…特定のパーミッションを指定できるようになったわけではないのでちょっと気持ち悪いですね。またハマったら追記します。
-
なお、
/etc/modules-load.d/uinput.conf
にuinput
は記入してあります: github.com。 ↩ -
ブートログを見る限り
uinput
モジュールの読み込み→udev
の起動→ルールの適用の順になるが、これをudev
起動→modprobe uinput
の順にすると、何故か想定通り設定される?? ↩