web-dev-qa-db-ja.com

コマンドラインなしでGUI Sudoパスワードプロンプトを取得する方法は?

現在、ルートアクセスを必要とするすべてのコマンドについては、コマンドラインで入力する必要があります。

コマンドラインからコマンドを入力する代わりに、GUIでSudoが必要なときにパスワードを入力するように求められます。

これを有効にする方法はありますか?以前、Ubuntuデスクトップの1つのバージョンには、この機能がすぐに使用できました。

Ubuntuのこのバージョン(現在実行している)は、サーバーインストールからアップグレードしました。

追加します。ユーザーアカウントは既にSudoグループに追加されています。したがって、Sudo geditSudo apt-getなどのコマンドを実行できますが、Ubuntu Software Centerにソフトウェアをインストールできません。

8
Sean

TL; DR:policykit-1およびpolicykit-1-gnomeパッケージをインストールしてみてください。

おそらくpolkit(a.k.a. PolicyKit)が必要です。

ソフトウェアセンターを含むUbuntuのほとんどのグラフィカルシステム管理ユーティリティは、通常、Sudoまたはそのようなものがなくても実行できます。プログラムを実行するのと同じ方法でそれらを実行するだけです。

ルート権限を必要とするタスクを実行するときが来たら、彼らは polkit を使用して必要なアクションを実行します。 polkitは、管理者がrootとしてアクションを実行できるようにするための、Sudoとは別のメカニズムです。デスクトップのUbuntuシステムにインストールされますが、デフォルトではUbuntu Serverインストールの一部ではありません。

したがって、Software Centerの通常の動作では、単にsoftware-centerとして呼び出すことができ、その時点で認証を求めるプロンプトは表示されませんが、ソフトウェアをインストールまたは削除するように指示すると、(グラフィカルに)認証を求められます。

あなたのシステムはGUIなしでUbuntu Serverシステムとして起動し、GUIをインストールしたように聞こえます。おそらく policykit-1 Install policykit-1 および policykit-1-gnome Install policykit-1-gnome パッケージがインストールされていません。をインストールすると、polkitはSoftware Centerなどのユーティリティで動作する可能性が高くなります。

Sudo apt-get update
Sudo apt-get install policykit-1 policykit-1-gnome

その後、あなたはただ実行することができるはずです:

software-center

(または、インストールしたデスクトップ環境で提供されているソフトウェアセンターをグラフィカルに選択します。)

完全に機能するUbuntuデスクトップシステムが必要な場合は、「フレーバー」に関係なくメタパッケージをインストールすることをお勧めしますシステムを変換したいUbuntuの基本的に、通常のUbuntuデスクトップシステムが必要な場合は、 buntu-desktop Install ubuntu-desktop

Sudo apt-get update
Sudo apt-get install ubuntu-desktop

これにより、polkitを使用しないなど、サーバーシステムに最小限のGUIをインストールすることで生じるさまざまなギャップを埋めることができます。一方、より最小限のGUIを使用したい場合は、これらのpolkitパッケージをインストールするだけです。

詳細については、 GUIでUbuntu Serverを実行する方法 を参照してください。

Sudoグラフィカル認証。

本当にコマンドをルートとして実行する必要があるが、グラフィカルな認証ダイアログが表示される場合、探しているのはgksudoまたはgksu )です。これは gksu Install gksu パッケージ。 Sudoのグラフィカルなフロントエンドです。

通常、gksudoは、グラフィカルアプリケーションをルート(またはそれらを起動するユーザー以外の他のユーザー)として実行するために使用されます。ただし、これを使用して非グラフィカルコマンドを実行することもできます。ただし、Sudoを使用してコマンドを実行できます。

端末からgksudoを実行できますが、実行する必要はありません。から実行できます Alt+F2 (コマンドを実行)ダイアログまたはExec=ファイルの.desktop行(またはグラフィカルプログラムを実行する他の方法)に配置します。

Sudo ...のようなコマンドは...がグラフィカルアプリケーションである場合、実際にアプリケーションを実行している非ルートユーザーの構成を壊す可能性があるため、ターミナルから実行している場合でも、gksudoを使用してグラフィカルアプリケーションをルートとして実行することを検討する必要があることに注意してください。 (幸いなことに、これは修正可能です。)Sudo geditは特に悪名が高いです。

グラフィカルアプリケーションのSudoの問題とその代わりの対処方法の詳細については、以下を参照してください。

また、非グラフィカルコマンド用のpolkitベースのグラフィカルな方法もあります。

gksudoは、グラフィカルプログラムと非グラフィカルプログラムの両方を実行するために正常に機能します。おそらくそれを使用する必要があります。

しかし、Sudoの代わりにpolkitを使用し、非グラフィカルプログラムでのみ動作する代替手段は、 pkexec です。

たとえば、pkexec touch /root/foo.txtを実行すると、グラフィカルな認証ダイアログが表示され、認証が成功するとtouch /root/foo.txtが実行され、foo.txtフォルダーに( またはfreshening/rootが作成されます。

  • pkexecは、グラフィカルダイアログを作成できない場合に、ターミナルを必要とする非グラフィカルダイアログを使用します。ただし、グラフィカルシェルまたはデスクトップ環境で提供される機能を使用して実行している場合、これは起こりそうにありません。
  • pkexecnon-graphicalプログラムに対してのみ機能するのはなぜですか?実際には、グラフィカルプログラムも実行しますが、polkitがそれを許可するように特別に構成されている場合のみです。これは通常は行われません。 man pkexec (および スクリーンショットを含む上流バージョン )、 この回答 および その回答 を参照してください。興味があります。

Sudo vs. polkit(技術的な詳細、興味がある場合のみ)

新しいgksu/gksudoは、Sudoの代わりにpolkitを使用して作業を行います ですが、このバージョンは広く採用されていません。私は主に推奨するためにそれを持ち出します そのソースコードのREADMEファイル (Gustavo Noronha Silvaによって書かれた) Sudoとpolkitの重要な違い。簡単に引用するには:

PolicyKitは、ユーザーが自分自身を認証できるようにし、アプリケーションが認証および承認情報を検証できるようにする機能を提供することにより、高い特権を必要とするアプリケーションの問題を解決します。アプリケーションは、すべての特権操作が(できれば)小さいD-Busサービスによって実行されるように構造化されている必要があります。このサービスは、非特権コードによって命令されます。実行されるすべての「アクション」には、Policykitを介して処理される適切な承認が必要です。

4。なぜgksuを維持するのですか?

そのため、アプリケーションは特権ユーザーとして実行する必要がなくなり、ユーザー認証はPolicyKitの認証エージェントによって実行されるため、本質的にgksuは不要になります。しかし、この新しい構造を採用するには、アプリケーションをリファクタリングする必要があり、実際にルートとしてプログラムを実行するものが必要な場合があります。

これらの問題は、あなたがいると思う状況の根底にあります。

  • Software Centerは、権限の昇格にpolkitを使用するように設計されているため、特定のアクションのみをルートとして実行する必要があります。このためには、システムにない(または壊れている)polkitが必要です。
  • Polkitを使用するように設計されているため、ソフトウェアセンターをルートとして起動するための事前に作成されたランチャーはありません。 polkitを使用すると、ほとんどの場合、rootとしてグラフィカル管理ツールを実行する必要がなくなります。
  • ただし、グラフィカルプログラムをルートとして実行する必要がある場合があります。その場合、gksu/gksudoを使用できます。
    (...最終的にpolkitを舞台裏で使用する可能性がありますが、現在Ubuntuにあるgksudoは、Sudoを使用する伝統的なものです)。
8
Eliah Kagan

便利な方法は、専用の.desktopファイルを作成するか、コマンドを既存のファイルに追加して、GUI(gksu)でパスワードを要求することです。次の例では、GeditランチャーにSudo特権でGeditおよびSoftware Centerを実行するコマンドを追加します。このセットアップを使用するには、gksuをインストールする必要があります:Sudo apt-get install gksu

  1. Gedit .desktop file in/usr/share/applications/to〜/ .local/share/applications`をコピーします。

    cp /usr/share/applications/gedit.desktop ~/.local/share/applications/gedit.desktop
    

    編集用に開きます(開いているgeditウィンドウにドラッグします)

  2. 次の行を探します:Actions = Window; Document;

  3. 行にコマンドの名前を追加します(これらはインターフェイスに表示される名前ではなく、ファイルの内部参照にのみ使用されます)

    Actions=Window;Document;gedit;Ubuntu Software Center;
    
  4. ファイルの下部に対応するセクションを追加します。

    [Desktop Action gedit]
    Name=Gedit  (with gksu)
    Exec=gksudo gedit
    OnlyShowIn=Unity;
    
    [Desktop Action Ubuntu Software Center]
    Name=Ubuntu Software Center (with gksu)
    Exec=gksudo /usr/bin/software-center
    OnlyShowIn=Unity;
    
  5. ファイルを閉じて、ランチャーにドラッグします

これで、sudo権限でgeditとSoftware Centerを実行できます。

enter image description here

enter image description here

4
Jacob Vlijm