15

Linux用のUIアプリ(GTKを使用)があり、rootとして実行する必要があります(/ dev / sd *の読み取りと書き込み)。

ユーザーが私のアプリを起動するたびにルートシェルを開くか、手動で「sudo」を使用するように要求する代わりに、アプリがOS提供のAPIを使用してルート権限を取得できるかどうか疑問に思います。(注:gtkアプリは「setuid」モードを使用できないため、ここではオプションではありません。)

ここでの利点は、ワークフローが簡単になることです。ユーザーは、ルートターミナルを開いてそこから起動する代わりに、デフォルトのユーザーアカウントから、デスクトップからアプリをダブルクリックできます。

OS Xがまさにこれを提供するので、私はこれを尋ねます:アプリはOSにroot権限で実行可能ファイルを起動するように要求できます-OS(アプリではなく)はユーザーに資格情報を入力するように要求し、それらを検証してから必要に応じてターゲットを起動します。

Linuxにも似たようなものがあるのだろうか(Ubuntuなど)

明確化:

それで、PolicyKitのヒントの後、それを使用して「/ dev /sd...」ブロックデバイスへのr/wアクセスを取得できるかどうか疑問に思います。文書を理解するのは非常に難しいと思うので、無駄にそれを理解しようと何時間も費やす前に、最初にこれが可能かどうかを尋ねたいと思いました。

アップデート:

このアプリは、経験の浅いLinuxユーザー向けのリモート操作ディスク修復ツールであり、Linux初心者は、特にディスクが動作を開始したばかりでおかしくなりそうな場合は、sudoの使用やユーザーのグループメンバーシップの変更についてあまり理解していません。 。そのため、このような技術を回避するソリューションを探しています。

4

1 に答える 1

6

古い方法は、単純ですが現在は段階的に廃止されていますが、GKSuです。これがGKSuの将来についての議論です。

新しい方法は、PolicyKitを使用することです。これがどのように機能するかはよくわかりませんが、コマンドを使用してアプリを起動する必要があると思いますpkexec

アップデート:

http://hal.freedesktop.org/docs/polkit/polkit-apps.htmlのサンプルコードを見ると、PolicyKitを使用して、のファイルで記述されている特定のアクションの認証を取得できるようです。別のユーザーとしてプログラムを実行するためのアクションはです。ブロックデバイスに直接アクセスするためのアクションを見つけることができないようですが、認める必要があります。PolicyKitのドキュメントも私の頭を悩ませています。.policy/usr/share/polkit-1/actionsorg.freedesktop.policykit.exec

したがって、おそらく最も簡単なアクションは、特権を必要とするディスクマングリングコードをコマンドラインユーティリティに分離し、を使用g_spawn_[a]sync()してGUIアプリケーションから実行することpkexecです。そうすれば、アクションの要求などを気にする必要がなくなります。とにかく、GUIアプリケーション全体をrootとして実行することはおそらく悪い習慣です。

もう1つの提案は、PolicyKit(David Zeuthen)の作成者に直接質問することです。または、gtk-app-develリストに質問を投稿してみてください。

于 2010-03-08T14:06:47.443 に答える