バックライトの明るさを細かく制御できるスクリプトがあり、実行するにはSudo
が必要です。それは本質的にこれです:
backlight="/sys/class/backlight/acpi_video0/brightness"
echo $1 | tee $backlight
~/bin/backlight-adjust
に住んでいます。 tee $backlight
は特権のある場所に書き込んでいるため、スクリプトにはSudo
特権が必要です。したがって、Sudo
で実行しないと失敗します。
Sudo backlight-adjust
はSudo
環境の~/bin
になく、自分の環境だけなので、$PATH
を実行できないため、このアプローチには問題があります。だから私はSudo env "PATH=$PATH" backlight-adjust
または類似のものを実行する必要があります。
または、次のように書くこともできます。
backlight="/sys/class/backlight/acpi_video0/brightness"
echo $1 | Sudo tee $backlight
パスワードを要求します。
2番目の方法は、Sudoを入力することを覚えておく必要がないので、私にとってはうまくいきます。プロンプトが表示されます。そして、$PATH
をそのままにしておくことができます。これは全体的に便利だと思いますが、2番目の方法を実行しない理由はありますか?
(私はXubuntu 14.04を実行していて、私のシェルはGNU bash 4.2.45です。違いがある場合)。
個人的に、私は別のアプローチを使用します。スクリプトのエイリアスを作成します。この行を~/.bashrc
(または他のシェルでは同等のもの)に追加します
alias backlight-adjust='Sudo ~/bin/backlight-adjust'
そうすれば、Sudo
で実行することを覚えておく必要がなく、スクリプトにSudo
を追加する必要もありません。これは完全に透過的であり、backlight-adjust
を実行するときにパスワードを要求するだけです。
なぜそれが正しくないのかはわかりません---通常、コマンドが質問を出さないようにして、スクリプトが実行できるようにすることを好みます。 /etc/sudoers
を微調整して、パスワードなしでSudo
を機能させることができます。
しかし...追加しないでください
chgrp one-of-your-groups-here /sys/class/backlight/acpi_video0/brightness
chmod g+w /sys/class/backlight/acpi_video0/brightness
/etc/rc.local
で、Sudo
を忘れてしまいましたか?
(Ubuntuでは、Sudo
を使用できる場合はSudoグループに属しているため、chgrp Sudo /sys...
を使用して満足できます。)
または、次を追加することもできます
Defaults env_keep +="PATH"
あなたの/etc/sudoers
ファイル。
〜/ binがSudo環境の$ PATHにないため、Sudoバックライト調整を行います
それで、なぜそれに依存するのですか?その行を/home/user/bin/backlight-adjust
と動作します。
しかし、私は本当にエイリアスを使用するTerdonの解決策も欲しいです。または、スクリプトを/usr/bin/
そして、すべてのユーザー(rootを含む)が利用できます。
一般的なルールを与えることはできません...スクリプト/プログラムが何らかの再構成(たとえば、プリンター)を実行するように設計されていて、通常のユーザーによって呼び出される場合は、そうする必要があります。それ以外の場合は、私は一人で十分に残しておきます。通常のユーザーが実行した場合は、失敗します(明示的なチェックの結果、または何かが許可されていないため)。
昇格された特権は、たとえあったとしても、控えめに渡されるべきです。より高い権限に切り替えるのは難しいので、専門家に任せたほうがよい(つまり、Sudo(1)
)。