質問

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

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

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

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

Linux (Ubuntu など) にも同様のものはないでしょうか。

説明:

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

アップデート:

このアプリは、Linux に詳しくないユーザー向けの、リモート操作によるディスク修復ツールです。Linux 初心者は、特にディスクの調子が悪くなって慌てふためいている場合には、sudo の使い方や、ユーザーのグループ メンバーシップの変更さえもあまり理解できないでしょう。 。だからこそ、私はこのような専門的なことを回避する解決策を模索しています。

役に立ちましたか?

解決

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

新しい方法は次のとおりです ポリシーキット. 。これがどのように機能するのかよくわかりませんが、次のコマンドを使用してアプリを起動する必要があると思います。 pkexec 指示。

アップデート:

サンプルコードを見ると、 http://hal.freedesktop.org/docs/polkit/polkit-apps.html, 、PolicyKitを使えば一定の認可を取得できるようです 行動 によって説明されています .policy 内のファイル /usr/share/polkit-1/actions. 。別のユーザーとしてプログラムを実行するアクションは、 org.freedesktop.policykit.exec. 。ブロック デバイスに直接アクセスするためのアクションが見つからないようですが、PolicyKit のドキュメントを読むと私の頭も混乱することを認めざるを得ません。

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top