web-dev-qa-db-ja.com

/ sys /パーマネントにパーミッションを設定するには?

Xをユーザーとして開始し、キーボードの明るさを/sys/class/leds/asus\:\:kbd_backlight/brightnessで設定する必要があります。 /sys/ディレクトリは再起動後に再作成されるため、権限もリセットされます。起動するたびにすべてのユーザーがファイルを書き込み可能にする必要がないようにするには、どうすればよいですか?

ログインマネージャーとしてSDDMを、DEとしてKDEを使用してArchlinuxを使用しています。

12
xoned

できません。sysfsの権限はカーネル空間で定義され、ユーザー空間ツールで変更することはできません(カーネル側のサポートがない場合)。

しかし、あなた自身の問題のために、誰もがそのパスに書き込むことを許可するSudoエントリ、つまりALL ALL = (ALL) NOPASSWD: /usr/bin/tee /sys/class/leds/asus\:\:kbd_backlight/brightnessをセットアップすることができます

そして、そのディレクトリに書き込むときは、次のようなスクリプトを使用します。echo 1 | Sudo /usr/bin/tee "/sys/class/leds/asus::kbd_backlight/brightness"

13
daisy

Linuxの/sysディレクトリは偽物であり、ファイルとしてドレスアップされたカーネルのビューです。そのため、パーミッションを永続的に変更することはカーネルをハッキングすることを意味し、それはお勧めできません。コメントが言うように、おそらくsystemdユニットを設定することでこれが解決策になります(一般に、ブートプロセスの一部として変更をセットアップします)。

4
vonbrand

同様の問題があり、noderedサービスを実行する前に権限を設定する必要がありました。 goldilocksのコメントに続いて、このsystemdスクリプトを作成しました。

$ cat /etc/systemd/system/setledspermissions.service

[Unit]
Description=Set leds writable to everybody
Before=nodered.service

[Service]
Type=oneshot
User=root
ExecStart=/bin/bash -c "/bin/chmod a+w /sys/class/leds/led0/*"

[Install]
WantedBy=multi-user.target

サービスファイルを書き込んだ後、私はそれを有効にしました

$ Sudo systemctl enable setledspermissions.service
$ Sudo systemctl start setledspermissions.service
$ Sudo systemctl status setledspermissions.service
4
hariseldon78