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


12

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

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


2
systemdブートサービスにコマンドを配置できます。
goldilocks

許可を設定する独自のsystemdサービスを作成するつもりですか?または、特定のファイルから話しますか?
xoned

前者。「サービス」はsystemdの用語ですが、この場合はデーモンではなく1回限りのコマンドになります。rc.localがsysVの下にあるような、一種の「その他」のサービスにすることができます。この場合、サービスは単にシェルスクリプトを実行し、そこにコマンドを配置します。
goldilocks

回答:


13

いいえ、できません。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"


私はそれを試しましたが、パスワードを常に要求します。また、(すべて)の背後にNOPASSWDを追加しようとしました。
xoned

@Timoもう一度試すことができますか?私の更新を参照してください
デイジー

今すぐ動作します。問題は、私のエントリがNOPASSWDのない別のエントリによって上書きされることでした。そして、他の答えよりも簡単だったので、私はあなたの答えを受け入れました。皆さんありがとう。
18:24に

ソニーvaioでLinux Mint Debianを使用し/sys/devices/platform/sony-laptop/kbd_backlight、キーボードバックライトを制御するためのファイルを作成しようとしています。このエラーにつながるコードのパスを変更しました:(bash: syntax error near unexpected token '`入力したコマンドはALL ALL = (ALL) NOPASSWD: /usr/bin/tee /sys/devices/platform/sony-laptop/kbd_backlight助けてください
インドラ

私は間にコンマを追加するまで、私はUbuntuマシン上でこの作業を取得できなかった/usr/bin/tee/sys/class...。文法を簡単に見てみるとman sudoers、カンマが必要だと思います。
セージミッチェル

4

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


4

同様の問題がありました。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

これは一般に、特定の/ sys /パスへの書き込みアクセスを許可する必要がある場合の方法ですか?私のユースケースでは、ĺaptopで画面のバックライトの明るさを設定しています。
リッチード

sysパスがブートごとに再作成されるためだと思います。しかし、私はそれについて確信するのに十分な専門家ではありません。
hariseldon78
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.