グラフィカルアプリケーションをルートとして実行することを目的とするさまざまなデスクトップ用のさまざまなツールがあります。 gksudo
、kdesudo
、empower
など...
しかし、Linuxデスクトップで使用できるスクリプトを書いている場合はどうでしょうか?何らかのxdg-Sudo
がありますか?デスクトップ環境でSudoアクセスを取得するための標準ですか?
@Tachyonsの提案に従って、pkexec
に関するLOTを調査しましたが、それはawesomeです!
それで、はい、それはすべての要件を満たしています。 "universal gksudo"にできる限り近いものだと思います。
つまり、pkexec
はPolicyKitのコマンドラインフロントエンドです。 2つの基本的な操作モードがあります。
Sudo
の場合と同じように実行するだけで、素敵なGUIプロンプトが表示されます。
$ pkexec rm -rf /
/usr/share/polkit-1/rules.d
にドロップすると、たとえば特定のアクションのみのルートアクセス、他のユーザーのパスワード不要、特定のパスなどに限定してアクセスします。驚くほど細かく設定を微調整できます。より一般的な方法は、「ヘルパープログラム」を記述することです。このようなプログラムは、ユーザーにパスワードを要求します。たとえば、Zenityがインストールされていることが確実な場合は、それを使用できます。そうでない場合は、PythonまたはGUIと対話できる何かでヘルパープログラムを記述する必要があります。
-A
( "askpass")および-S
(stdin)オプションについては、Sudo
マニュアルをお読みください。
また、スクリプトからSudo
を実行するときは、gksudo
をシミュレートするために-H
(ホーム)オプションが必要であることを忘れないでください。
この方法はうまく機能しますが、ヘルパープログラムを徹底的にテストして、バグがないことを確認する必要があります。
いいえ、root(または他のユーザー)の特権を取得する標準的な方法はありません。
できるだけ多くのシステムと互換性を持たせたい場合は、何らかの方法を想定せずに、特定のユーザーとしてスクリプトを実行する必要があることをユーザーに伝えてください。その後、スクリプトが適切な方法で実行されるようにシステムを構成するのはユーザー/管理者次第です。
Su、Sudo、ConsoleKitなどの最も一般的な認証システムの使用方法についていくつかの提案をするとよいでしょう。