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


17

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

しかし、Linuxデスクトップで使用できるスクリプトを書いている場合はどうでしょうか?そこにあるxdg-sudoいくつかの並べ替えのは..?デスクトップ環境でsudoアクセスを取得するための標準ですか?

回答:


16

@Tachyonsの提案に続いて、私は約LOTを調査pkexecし、それが素晴らしいです

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

はい、それはすべての要件を満たし、「ユニバーサルgksudo」に最も近いものだと思います。

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

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

    $ pkexec rm -rf /

pkexec GUIプロンプト

  • または、アプリケーション用のPolicyKit認証ファイルを作成してドロップすると/usr/share/polkit-1/rules.d、特定のアクションのみのルートアクセス、他のユーザーのパスワードは不要、特定のパスに制限されたアクセスなど、大量のカスタマイズとセキュリティ関連のオプションが許可されますなど。設定を微調整して微調整できます。

6

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

( "askpass")および(stdin)オプションのsudoマニュアルをお読みください。-A-S

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

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


1
また、プログラムで渡すxauthトークンを処理する必要があります-これは簡単ではありません。
シンビアン

4

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

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

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


2009年初頭polkitはそうでしたが、ありがたいことに現在(以前のPolicyKit)は広く普及しており、標準と見なされています。
メストレリオン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.