sudoers構文に問題があります。簡単に言えば、グラフィックカードの問題で問題が発生していますが、最近簡単なコマンドでグラフィックカードのオンとオフを切り替えることができることを発見しました(以前は常にオフになっており、90%は大丈夫でしたが、時には追加の電力を使用してください)。私の考えは、さまざまなスクリプトでこれら2つのコマンドを使用してGCをオンにし、GCを使用するコマンドを実行してから次のようにオフにすることです。
sudo tee /proc/acpi/bbswitch <<<ON
optirun [command]
sudo tee /proc/acpi/bbswitch <<<OFF
問題は、これらのスクリプトがシェルでほとんど実行されず、ほとんどの.shファイルをダブルクリックして実行されることです。それで、特定のコマンドのパスワードを避ける方法を調べてみsudo
ましたsudoers
。
visudo
ファイルの末尾に行を実行して追加しました。
grb ALL=(ALL) NOPASSWD: tee /proc/acpi/bbswitch <<<OFF, tee /proc/acpi/bbswitch <<<ON
しかし、エディタを閉じるとすぐに構文visudo
エラーがあると表示されますが、それはすべてです。コマンドを1つだけ追加しても構文エラーが発生します。
grb ALL=(ALL) NOPASSWD: tee /proc/acpi/bbswitch <<<OFF
この行は最後に追加され、ファイルを編集するのは今回が初めてですsudoers
。
役に立つ場合は、Ubuntu MATE 18.04を使用しています。私は答えが本当に簡単だと思いますが、私の場合に合った文書を見つけることができません。私が強調したいのは、可能な入力を/proc/acpi/bbswitch
ONとOFFに制限する必要があるということです。何か他のものを書くと何が起こるのかわからず、私のGCが私に与える問題であると判断すると、本当にこれが起こる可能性があります。パスワードが必要な場合、またはプログラムが起動しない場合は、スイッチコマンドが正しく作成されたことを確認する必要があることに注意してください。
答え1
リダイレクトは実際のコマンドの一部ではありません。これは、標準の入出力用のパイプを特定の方法で配置するためのシェルの指示にすぎません。今後実際にコマンドを実行してみてください。
<<<
したがって、ファイルコマンドに "here-string"リダイレクトを含めることは意味がありませんsudoers
。
代わりに、使用を制限したいのでただ文字列の書き込みON
を許可するには、次のスクリプトを作成できます。OFF
/proc/acpi/bbswitch
#!/bin/sh
case $1 in
ON) ;; # nothing
OFF) ;; # nothing here either
*) printf 'Usage: %s ON|OFF\n' "$0" >&2
exit 1
esac
printf '%s\n' "$1" >/proc/acpi/bbswitch
ON
その後、必要なユーザーがアクセスできますが変更できないディレクトリに配置し、OFF
コマンドライン引数で使用できるようにすることができます。
grb ALL=(ALL) NOPASSWD: /some/path/script.sh ON, /some/path/script.sh OFF
(あるいは同様のもの)