私のキーボードバックライトファンクションキーが機能していないようで、rootとして実行する必要があるキーボードの明るさを変更するスクリプトを作成しました。そう呼んでいます...
sudo /usr/bin/local/backlight inc
sudo /usr/bin/local/backlight dec
これは端末ではうまく機能しますが、キーボード設定で作成したカスタムキーボードショートカットを使用するコマンドでは機能しません。
ここで推測するだけで問題は、キーボードショートカットを介して呼び出すと、コマンドが実際に私のユーザーではなく他の人として実行され、これがsudoersファイルに表示されないことです。
答え1
Gnome 3は次のプログラムを使用します。ポルキットしたがって、実行可能ファイルをrootとして実行する正しい方法は次のようになります。プログラムの実行:
pkexecを使用すると、特権ユーザーは他のユーザーとしてPROGRAMを実行できます。ユーザー名を指定しないと、プログラムは管理スーパーユーザーのrootとして実行されます。
アクティブセッションのユーザーにrootとしてコマンドを実行する権限を付与するには、次のファイルを使用して上記のXML
仕様に従って新しいタスクを定義する必要があります。/usr/share/polkit-1/actions
org.fedora.pkexec.kbback.policy
コンテンツ/usr/share/polkit-1/actions/org.fedora.pkexec.kbback.policy
:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
"http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<policyconfig>
<icon_name>input-keyboard</icon_name>
<action id="org.fedora.pkexec.kbback">
<message>Authentication is required to Change Keyboard Backlight</message>
<defaults>
<allow_any>no</allow_any>
<allow_inactive>no</allow_inactive>
<allow_active>yes</allow_active>
</defaults>
<annotate key="org.freedesktop.policykit.exec.path">/usr/local/bin/backlight</annotate>
</action>
</policyconfig>
次のステップは、GNOMEキーボード設定でコマンドをキーボードショートカットに割り当てることです。
pkexec /usr/local/bin/backlight inc
pkexec /usr/local/bin/backlight dec
(注:実行ファイルパスを使用しました/usr/local/bin/backlight
。実行ファイルパスが異なる場合は、作業ファイルと両方のコマンドを変更する必要があります。)
答え2
gksudo
このような場合は を使うべきだと思います。私はマニュアルgksudo(1)
ページを引用しています:
gksuはsuのフロントエンド、gksudoはsudoのフロントエンドです。主な目的は、X端末エミュレータを実行したり、suを直接使用したりせずにrootを必要とするグラフィカルコマンドを実行することです。
したがって、ここでの問題は、キーボードショートカットで実行されたコマンドが(擬似)端末デバイスに接続されていないため、エラーが発生するため、sudo
代わりgksudo
に使用する必要があることです。