Linuxで「デバイスファイルへの書き込み権限を取得する方法」とは何ですか?

Linuxで「デバイスファイルへの書き込み権限を取得する方法」とは何ですか?

画面の明るさを調整するためにBrightnessctlをインストールしましたが、rootとしてのみ機能します。それ以外の場合は、「デバイスファイルへの書き込み権限を取得しました」というアドバイスが印刷されます。これを行う正しい方法は何ですか?また、root権限なしでamixerを使用してボリュームを設定できるようにしたいです。これは同じ問題だと思います。

答え1

多くのデバイスアクセスの問題は、グループメンバーシップの変更で解決できます。

sudo journalctl --followデバイスが接続されている間に視聴してデバイス名を見つけることができます。または、ls -1 /dev >dev.beforeデバイスを接続して10秒間待ちますls -1 /dev >dev.after;diff dev.{before,after}

特に、ls -l グループ表示権限(2番目のrwx三重項)が「」rw(例: " -rw-rw----")の場合、デバイスを所有するグループに自分自身を追加すると、rwアクセス権が付与されます。

それだけです:

# change to your device name 
device="/dev/dvdrw"
sudo adduser $USER $(stat -c "%G" $device)

これにより、デバイスを使用できるグループのメンバーになることができますrwしかし、もう一つのステップがあります。

すべてのプロセスを新しいグループのメンバーにするには、ログアウトしてログインします。グループメンバーシップは時間ベースで設定されますlogin

新しいグループから単一のプロセスを作成するには(テスト用、ログアウト/ログイン前):

newgrp $(stat -c "%G" $device)  

またはグループ名を入力してください。望むよりman newgrp

答え2

オプション:

  1. 推奨事項:sudo一般ユーザーとして実行できるように構成します。

  2. 明るさctlを実行するスクリプトを作成するには、suid rootを使用してください。 (パッケージマネージャを使用したと仮定すると、次のアップグレードでは維持されないため、Brightnessctlで直接suid rootを試みないでください。)スクリプトの作成方法によっては、セキュリティホールが発生する可能性があります。

  3. 問題のあるデバイスファイルを識別し、udevルールを作成して、作成後に権限を設定します。文章を書いたりデバッグしたりするのは楽しいことではありません。


また、rootアクセスなしでamixerを使用してボリュームを設定できるようにしたいです。

ルートなしでうまく機能するため、amixerこの場合はディストリビューション/コンピュータに奇妙な設定があると思われます。または、あなたのディストリビューションが私と似ている場合は、オーディオ操作を実行する権限を持つグループのメンバーとして使用法が設定されていません(マイaudioディストリビューションでは編集またはディストリビューションが提供する/etc/groupツールのみを使用)。

答え3

video自分をグループに追加する必要がinput正常にbrightnessctl動作します。バラよりhttps://github.com/Hummer12007/brightnessctl/issues/63

関連情報