アクティブなディスプレイ/vt が実行場所と異なる場合、一部のコマンドが失敗します。これを修正/回避するにはどうすればよいですか?

アクティブなディスプレイ/vt が実行場所と異なる場合、一部のコマンドが失敗します。これを修正/回避するにはどうすればよいですか?

これらのアプレットはX上でDISPLAY=:0fgconsole7)で実行されています。

ネットワークアプレット
nm-applet/ に関連して、NetworkManagerこのコマンドを実行しますsleep 10;nmcli nm enable false;beep(インターネットに接続している必要があり、切断されます)。そして、すぐに「Ctrl+Alt+F1」を押して vt1 に移動します。次のエラーで失敗します:

「** (プロセス:1388670): 警告 **: ネットワークの有効化/無効化エラー: ネットワークの有効化/無効化の権限がありません」

CPU周波数
indicator-cpufreqこのコマンドを実行し 、sleep 10;cpufreq-selector -g powersave;beepすぐに「Ctrl+Alt+F1」を押してvt1に移動すると、
このメッセージが表示されて失敗します。

「SetGovernor の呼び出しエラー: 呼び出し元は承認されていません」

どうすれば修正できますか?
(なぜこのようなことが起こるのかご存知でしたら、私も知りたいです)
(通常のユーザーであれば、適切なディスプレイ上でこれらのコマンドを発行できますので、可能であれば sudo を必要としない回答を希望します)

PS.: beepが必要です。sudo modprobe pcspkr
別の X (例: ) で実行した場合もsudo -k X :1 & sleep 5;xterm -display :1同じエラー メッセージが表示されて失敗します。

答え1

PolicyKit をお持ちです。

PolicyKit は、誰が何を行う権限があるかを制御するクライアント サーバー システムです。NetworkManager などの信頼できるプログラムは、リモート プロシージャ コールを通じて PolicyKit に、それを呼び出したユーザーが xe が要求したアクションを実行する権限があるかどうかを問い合わせます。

認可サーバーによって処理されるアクションのルールは、/usr/share/polkit-1/actionsディレクトリにあります。ルールでは、すべてのユーザーに適用する方法、アクティブな仮想端末ではないローカル仮想端末にログオンしているユーザーに適用する方法、アクティブな仮想端末ではないローカル仮想端末にログオンしているユーザーに適用する方法を指定できます。アクティブな仮想端末。3 つすべてが異なる場合があります。

明らかに、システムのルールでは、これらのさまざまな特権タスクは、アクティブな仮想端末にログオンしているユーザーのみが実行できるようになっています。したがって、そうならないようにしたい場合は、ルールを変更してください。

参考文献

  • polkit. Ubuntu Trusty man ページ。2010 年 8 月。Canonical Ltd.

関連情報