web-dev-qa-db-ja.com

/ sysファイルのudevが機能しない

グループ属性を設定しようとしています

root@luna:~# ls -l /sys/class/backlight/intel_backlight/brightness 
-rw-r--r-- 1 root root 4096 Sep 24 08:28 /sys/class/backlight/intel_backlight/brightness

/etc/udev/rules.d/99-local.rulesにルールを作成しました:

root@luna:/etc/udev/rules.d# cat 99-local.rules 
KERNEL=="intel_backlight", SUBSYSTEM=="backlight", GROUP="neil", mode="0664"

Systemctl restart udev、udevadm control -R、または再起動のいずれの場合でも、ルールは適用されません。私は何を間違えましたか?

1
Neil H Watson

Udevは/devの下にデバイスファイルエントリを作成します。 Udevルールはそれらのエントリに影響します。 /sysの下のファイルは、カーネルによって作成された直接カーネルインターフェイスであり、udevの影響を受けません。

/sysの下にあるファイルの所有権または権限を変更する場合は、明示的に行ってください。

#!/bin/sh
chown neil /sys/class/backlight/intel_backlight/brightness
chmod 664 /sys/class/backlight/intel_backlight/brightness

ディスプレイデバイスがudevイベントを発生させる場合は、RUN=…アクションを使用してこのスクリプトを実行できます。または、このスクリプトを起動プロセスのどこかで実行します。 /etc/rc.localで。

私はちょうどこの質問に出くわしました。/sysの下のファイルの権限と所有権を変更する適切な方法は、tmpfilesconfigsを使用することです。たとえば、以下を/etc/tmpfiles.d/screen-backlight.confに配置すると、目的の結果が得られます。

m /sys/class/backlight/intel_backlight/brightness 0664 root some_group_that_neil_belongs_to - -

すべてのオプションについては、man 5 tmpfiles.dを参照してください。

1
markhellewell