sudo vs gksudo。差?


37

違いは何だsudoとはgksudo


1
良い質問。今、Linuxを学んでいます(キーボードレイアウトがまだ見つかりませんでした)。
r0ca

回答:


27

sudoコマンドラインでパスワードを要求し、そのためのgksudoダイアログボックスをポップアップします。


6
gksu(do)には、su(do)の環境変数とは別に、子に渡す環境変数の独自の構成もあります。たとえば、sudoersの構成で!keep_envが指定されている場合、$ DISPLAYがないとグラフィカルアプリケーションの実行が妨げられる可能性がありますが、gksudoは動作するはずです。詳細はgit.debian.org/?p=users/kov/gksu-polkit.git;a=blob;f=common/…またはlive.gnome.org/gksuで見つけることができます。
一時的な

@ephemientだから、グラフィカルプロンプト以外にも、あるsudo -Eに相当gksudo
同型

3
以下の答えははるかに優れているようですsuperuser.com/a/726249/112542
ジョニーなぜ

4
私はこれが重要な違いではないことを強調したいと思います。そして、この答えは初心者にとって非常に誤解を招くものです。主な違いはここで説明されています:askubuntu.com/a/11766/81034と以下の回答(@johnywhyにリンクされている)は、それをさらに一歩進めてニュアンスを追加します。この誤解を招く答えに頼るのではなく、askubuntuの質問をお読みください。
スンダ

31

gksudoGTKベースのフロントエンドであるsudo(ちなみに、kdesudoしかし、それ(デフォルトでは)ハンドル複数の環境変数(、Qtのベースのフロントエンドである)HOMEXAUTHORITYなど)よりもsudoので、rootとしてコマンドを実行している安全な作り。


私が見る限り、@ Logicsの答えだけが十分に正しい(@Ignacio Vazquez-Abramsの完全ではない)。@Davrosの@knittiの回答/コメントを明確にしようとしています(不要な場合は親切に削除/編集してください):

  1. 両方のコマンドは実際に表されますがsudo、使用されるUIだけが2つのコマンドの違いではありません。
  2. GUIプログラムの実行は、gk / kdesudoを使用する必要がある唯一の状況ではありません。代わりに、コマンドがファイルをホームディレクトリ(HOME環境変数が指すsudo一部のシステムおよび状況ではコマンド)。 すべてのGUIアプリがホームディレクトリに書き込みを行うわけはなくすべてのCLIアプリが書き込みを行うわけはないため、コマンドのタイプは重要なポイントではありません。
  3. あなたはまだすることができます使用してsudorootとして(例として、アプリのコンソール出力を表示するために)打ち上げGUIアプリケーションにコマンドを、しかし、あなたはハンドルに必要なHOME(とのような他の人XAUTHORITYDISPLAYなど、インプットメソッド関連-もの)の環境変数を正しくので、起動したアプリが失敗したり、機能を失ったり、本当に悪いことをしたりしないこと。以下は、現在使用している推奨事項ですsudo
    • sudo -H <rest of the command>
      • sudoセクション8のマニュアルページから)この-H ( HOME )オプションは、セキュリティHOMEデータベースがパスワードデータベースで指定されたターゲットユーザー(デフォルトではルート)のホームディレクトリに環境変数を設定することを要求します。ポリシーによっては、これがデフォルトの動作になる場合があります。
      • これにより、少なくともsudo呼び出し元のホームディレクトリにファイルが作成されないようにする必要があります。
    • sudo -H DISPLAY=<a working X display name, usually :0> <rest of a GUI program command>
      • これにより、<GUIプログラム>がTTY端末で実行され、デスクトップ環境に表示されます。
  4. 動作sudoコマンドは、すべてのシステムで同一ではないとして構成できvisudoコマンド、チェックしてみてくださいsudoers(5)詳細はmanページを。

2
すべての票を獲得しているものよりもはるかに良い説明のようです。より徹底的に、より正確に。OPでさえ「それだけですか?」すべての票を得た答えに。
ジョニー、なぜ

2

通常のsudoを使用してグラフィカルプログラムを実行すると、まれに一部のファイルのアクセス許可が台無しになります。安全のために、gksudo(または必要に応じてkdesudo)を使用して、GUIでプログラムを実行する必要があります。これは本当にバグだと思いますが、gksudoはXサーバー変数を理解し、sudoが問題を引き起こす可能性はないとの説明を聞きました。ヒントとして。グラフィカルプログラムをルートとして実行している場合は、実行するプログラムごとに1つのターミナルを開くのではなく、ALT-F2(altキーとファンクションキー2を同時に入力)を入力し、「gksudo引用符なしでプログラム」を実行し、実行するアプリケーションでプログラムを置き換えます。


2

sudoは、昇格された特権を持つ現在のユーザーとして実行されます。これにより、グラフィカルアプリを実行しているときに、特定のユーザー設定ファイル(グラフィカル環境に関連する)の​​ファイル権限が変更される可能性があります。これらのアプリをsudoなしで再度実行すると、エラーが発生する場合があります。

gksudo(KDEではkdesudo)はアプリをrootユーザーとして実行するため、ユーザーのファイルではなく、rootのファイルに対するファイルのアクセス許可がすべて適用されます。gksudo / kdesudoを使用せずにこれらのアプリを再度実行すると、常に予期される動作が行われます。


0

現在の答えは間違っています。Ubuntu RootSudo wikiによると:

「通常のsudoを使用してグラフィカルアプリケーションをルートとして起動しないでください。gksudo(Kubuntuのkdesudo)を使用してこのようなプログラムを実行する必要があります。gksudoはHOME =〜rootディレクトリがルートによって所有されるようになります(AFAICT、これはgksudoとsudoで開始されたプロセスの環境に関して特別なことです)。


2
他にも4つの答えがあります。どちらが間違っていますか?あなたの答えは、ダブロスの答えと本質的に同じではありませんか?
fixer1234

私は正しいとマークされた答えに言及していました。はい、ダブロスは同じことを言っていますが、ソースへのリンクが含まれていなかったため、これを追加しました。
eugene1832

1
より良い解決策は、その回答の編集を提案することです。回答を改善することは受け入れられる可能性が高く(+2 rep)、本質的に回答を複製することは下票を引き付ける可能性があります。
fixer1234
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.