バックグラウンドシェルスクリプトによる特権の昇格

バックグラウンドシェルスクリプトによる特権の昇格

にある(プリンタの)デバイスファイルに書きたいです/dev/usb/lp0。ファイルはlpユーザーとグループの所有です。このファイルは、プリンタデバイスをシステムに接続するたびに作成されます。

私はlpグループに私を追加しようとしました。ただし、プリンタを接続するとファイルlp0は表示されません。グループから自分を削除すると、この問題は解決されました。


書き込み権限を取得する1つの解決策は次のとおりです。

  1. デバイスが接続されるたびに検出
  2. シェルスクリプトを実行して実行sudo chmod 0666 /dev/usb/lp0

これが私に答えを与えたhttps://unix.stackexchange.com/a/28711


シェルスクリプトが正常にトリガされましたが、sudo command端末でシェルスクリプトが実行されなかったため、実行されませんでした。sudoを試しましたが、gksudoどちらもパスワードの入力を求められませんでした。つまり、バックグラウンドシェルスクリプトを介して権限をエスカレートすることはできません。

私はすでに何を試しましたか?

  1. setuid~からUnixとLinux @StackExchangeしかし、これは非常に悪い考えのようです。
  2. echo 'my_insecure_password' | sudo -S command、動作しません*。

Polkit私は他の答えで提案された複雑さのために試していません。しかし、私は正しい指示に従って喜んでこれを行います。

ベストアンサー1

このlpグループに自分自身を追加するのはおそらく最高の解決策でしょう。そうだろういいえその結果、lp0ファイルは表示されません。 (理論的には、あなたのシステムはlp0あなたがグループにいるときに表示されないlpように設定されているかもしれませんが、1.これはディストリビューションのデフォルトではなくローカル設定でなければなりません。します。)


以下は学問的関心だけのためのものです。あなたのシナリオではこれは必要ありません。

デバイスファイルの権限を変更する必要がある場合USBデバイスプラグインでカスタムスクリプトを実行するには?必ずしも必要ではありません。これは、スクリプトが必要なより複雑な場合に使用されます。 Unix権限またはデバイスファイルの所有権を変更するには、udevルールで直接使用して割り当てますOWNER。つまり、下にファイルを生成しますが、そのファイルの行には。GROUPMODE/etc/udev/rules.dGROUP="mygroup"RUN="/path/to/script"

アクセス制御リストの設定など、より複雑なタスクを実行するにはスクリプトを実行する必要があります。このスクリプトでは権限をエスカレーションする必要はありません。すでにrootで実行中です!ルートとして実行する必要があるプログラムを呼び出すだけですsetfacl

おすすめ記事