web-dev-qa-db-ja.com

sudo対gksudo。差?

Sudogksudoの違いは何ですか?

37
oneat

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

gksudoはGTKベースのSudo(BTW、kdesudoはQtベースのフロントエンド)のフロントエンドですが、(デフォルトで)より多くの環境変数を扱います(HOMEXAUTHORITYなど)をSudoよりも実行することで、実行中のコマンドをrootとして安全にします。


私が見る限り、@ Logicsの答えだけで十分です(@Ignacio Vazquez-Abramsの答えは完全ではありません)。 @Davros @knitti answer/commentsへの試行錯誤の説明を以下に示します(不要な場合は、削除/編集してください)。

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

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

2
Davros

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

gksudo(KDEではkdesudo)はrootユーザーとしてアプリを実行するため、変更されたファイル権限はユーザーのファイルではなく、ルートのファイルに対して行われます。 gksudo/kdesudoなしでこれらのアプリを再度実行すると、常に期待どおりの動作が得られます。

2
Logics

現在の答えは正しくありません。 buntu RootSudo wiki によると:

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

0
artis3n