web-dev-qa-db-ja.com

デスクトップに中立なgksudoはありますか?

グラフィカルアプリケーションをルートとして実行することを目的とするさまざまなデスクトップ用のさまざまなツールがあります。 gksudokdesudoempowerなど...

しかし、Linuxデスクトップで使用できるスクリプトを書いている場合はどうでしょうか?何らかのxdg-Sudoがありますか?デスクトップ環境でSudoアクセスを取得するための標準ですか?

16
Oli

@Tachyonsの提案に従って、pkexecに関するLOTを調査しましたが、それはawesomeです!

  • これは、広く使用されているパッケージである PolicyKit の一部です。
  • freedesktop.org がホストおよびスポンサー
  • デフォルトのGnomeUnityMATECinnamonKDELXDEおよびXFCE、その他
  • D-Bus経由で機能するため、明確に定義されたプロトコルを使用して、完全にデスクトップに依存しません。
  • 多くのDEでは、ログイン画面、シャットダウン/再起動、ディスク管理(udisks/automount)などのように 複数のサービスで使用 です。

それで、はい、それはすべての要件を満たしています。 "universal gksudo"にできる限り近いものだと思います。

つまり、pkexecはPolicyKitのコマンドラインフロントエンドです。 2つの基本的な操作モードがあります。

  • Sudoの場合と同じように実行するだけで、素敵なGUIプロンプトが表示されます。

    $ pkexec rm -rf /

pkexec GUI Prompt

  • または、アプリケーション用のPolicyKit認証ファイルを作成し、/usr/share/polkit-1/rules.dにドロップすると、たとえば特定のアクションのみのルートアクセス、他のユーザーのパスワード不要、特定のパスなどに限定してアクセスします。驚くほど細かく設定を微調整できます。
14
MestreLion

より一般的な方法は、「ヘルパープログラム」を記述することです。このようなプログラムは、ユーザーにパスワードを要求します。たとえば、Zenityがインストールされていることが確実な場合は、それを使用できます。そうでない場合は、PythonまたはGUIと対話できる何かでヘルパープログラムを記述する必要があります。

-A( "askpass")および-S(stdin)オプションについては、Sudoマニュアルをお読みください。

また、スクリプトからSudoを実行するときは、gksudoをシミュレートするために-H(ホーム)オプションが必要であることを忘れないでください。

この方法はうまく機能しますが、ヘルパープログラムを徹底的にテストして、バグがないことを確認する必要があります。

6
Paddy Landau

いいえ、root(または他のユーザー)の特権を取得する標準的な方法はありません。

できるだけ多くのシステムと互換性を持たせたい場合は、何らかの方法を想定せずに、特定のユーザーとしてスクリプトを実行する必要があることをユーザーに伝えてください。その後、スクリプトが適切な方法で実行されるようにシステムを構成するのはユーザー/管理者次第です。

Su、Sudo、ConsoleKitなどの最も一般的な認証システムの使用方法についていくつかの提案をするとよいでしょう。

4
Florian Diesch