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


10

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

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

これを有効にする方法はありますか?以前のバージョンのUbuntuデスクトップには、この機能が標準で備わっていました。

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

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

回答:


10

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

おそらくpolkit(別名PolicyKit)が必要です。

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

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

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

システムがGUIのない​​Ubuntu Serverシステムとして起動し、GUIをインストールしたような説明から聞こえます。おそらく、policykit-1policykit-1をインストールするおよびpolicykit-1-gnomepolicykit-1-gnomeをインストールするパッケージがインストールされていません。をインストールすると、polkitはソフトウェアセンターやその他のユーティリティで動作するようになります。

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

それからあなたはただ走ることができるはずです:

software-center

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

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

sudo apt-get update
sudo apt-get install ubuntu-desktop

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

詳細については、GUIを使用してUbuntuサーバーをどのように実行しますか?を参照してください

sudo グラフィカル認証。

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

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

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

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

sudoグラフィカルアプリケーションの問題の詳細と代わりに何をすべきかについては、以下を参照してください。

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

gksudoグラフィカルプログラムと非グラフィカルプログラムの両方を実行する場合に問題なく機能します。あなたはおそらくそれを使うべきです。

ただし、非グラフィカルプログラムの代わりにpolkitを使用sudoする以外の方法は、ですpkexec

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

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

sudo対polkit (興味がある場合のみ、いくつかの技術的な詳細)

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

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

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

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

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

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

1
こんにちはEliah、はい、それはGUIのない​​サーバーであり、ubuntu GUIを試してみました。コマンドsudo apt-get install ubuntu-desktopを実行しましたが、ポリシーキットがインストールされているかどうか不明です。とにかくそれをインストールしようとします。現在12.04から14.04にアップグレードしています。
Sean

通常どおりに実行したい(ルート以外の)GUIアプリケーションがある状況に遭遇しましたが、ルートが所有するシリアルポートから読み取る必要があるだけです。このプログラムに単一の特権を付与するだけでは、本当に煩わしいです(つまり、完全なオブジェクト機能システムが必要です)。
CMCDragonkai 2016

3
ないてくださいということgksuは非推奨とUbuntu 18.04から削除されました
ネイサンF.

5

便利な方法は、専用.desktopファイルを作成するか、既存のファイルにコマンドを追加して、GUI(gksu)からパスワードを要求することです。次の例では、sedit権限でGeditとソフトウェアセンターを実行するコマンドをGeditランチャーに追加します。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. ファイルを閉じてランチャーにドラッグします

これで、sedit権限でgeditとソフトウェアセンターを実行できます。

ここに画像の説明を入力してください

ここに画像の説明を入力してください


確かに。私は異議はありません。USCについてコメントした理由は、OPがサーバーインストールから作成されたシステムを、管理タスクのグラフィカル認証に関して、通常のUbuntuデスクトップシステムのように機能させる方法についてです。私の答えはそれに焦点を合わせ、グラフィカルにルートとしてプログラムを実行する一般性を説明しています。そうすることで、それはgksu/ のメカニズムを省きgksudoます。だからあなたの答えは良いですし、必要です!私は、OPがpolkitをインストール/修正することを願っています。これにより、OSが希望どおりに機能するようになると思います。
Eliah Kagan 2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.