にある(プリンタの)デバイスファイルに書きたいです/dev/usb/lp0
。ファイルはlp
ユーザーとグループの所有です。このファイルは、プリンタデバイスをシステムに接続するたびに作成されます。
私はlp
グループに私を追加しようとしました。ただし、プリンタを接続するとファイルlp0
は表示されません。グループから自分を削除すると、この問題は解決されました。
書き込み権限を取得する1つの解決策は次のとおりです。
- デバイスが接続されるたびに検出
- シェルスクリプトを実行して実行
sudo chmod 0666 /dev/usb/lp0
これが私に答えを与えたhttps://unix.stackexchange.com/a/28711
シェルスクリプトが正常にトリガされましたが、sudo command
端末でシェルスクリプトが実行されなかったため、実行されませんでした。sudo
を試しましたが、gksudo
どちらもパスワードの入力を求められませんでした。つまり、バックグラウンドシェルスクリプトを介して権限をエスカレートすることはできません。。
私はすでに何を試しましたか?
setuid
~からUnixとLinux @StackExchangeしかし、これは非常に悪い考えのようです。echo 'my_insecure_password' | sudo -S command
、動作しません*。
Polkit
私は他の答えで提案された複雑さのために試していません。しかし、私は正しい指示に従って喜んでこれを行います。
ベストアンサー1
このlp
グループに自分自身を追加するのはおそらく最高の解決策でしょう。そうだろういいえその結果、lp0
ファイルは表示されません。 (理論的には、あなたのシステムはlp0
あなたがグループにいるときに表示されないlp
ように設定されているかもしれませんが、1.これはディストリビューションのデフォルトではなくローカル設定でなければなりません。します。)
以下は学問的関心だけのためのものです。あなたのシナリオではこれは必要ありません。
デバイスファイルの権限を変更する必要がある場合USBデバイスプラグインでカスタムスクリプトを実行するには?必ずしも必要ではありません。これは、スクリプトが必要なより複雑な場合に使用されます。 Unix権限またはデバイスファイルの所有権を変更するには、udevルールで直接使用して割り当てますOWNER
。つまり、下にファイルを生成しますが、そのファイルの行には。GROUP
MODE
/etc/udev/rules.d
GROUP="mygroup"
RUN="/path/to/script"
アクセス制御リストの設定など、より複雑なタスクを実行するにはスクリプトを実行する必要があります。このスクリプトでは権限をエスカレーションする必要はありません。すでにrootで実行中です!ルートとして実行する必要があるプログラムを呼び出すだけですsetfacl
。